From 75b07292c99bdae7efe539bbe797aa4c381c880e Mon Sep 17 00:00:00 2001 From: Edouard Veyrier Date: Wed, 28 Mar 2018 19:20:20 +0200 Subject: Translate first functions of learn move --- src/learn_move.c | 83 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 src/learn_move.c (limited to 'src') diff --git a/src/learn_move.c b/src/learn_move.c new file mode 100644 index 000000000..3a1ac72f4 --- /dev/null +++ b/src/learn_move.c @@ -0,0 +1,83 @@ +#include "global.h" +#include "main.h" +#include "task.h" +#include "script.h" +#include "sprite.h" +#include "palette.h" +#include "menu.h" +#include "list_menu.h" +#include "malloc.h" +#include "field_screen.h" +#include "event_data.h" +#include "learn_move.h" + +extern void (*gFieldCallback)(void); +extern struct LearnMoveStruct *gUnknown_0203BC34; + +// Ew, just copied from poeruby... +const u16 gDexArrows_Pal[] = INCBIN_U16("graphics/pokedex/arrows.gbapal"); +const u8 gDexArrows_Gfx[] = INCBIN_U8("graphics/pokedex/arrows.4bpp"); +const struct SpritePalette gUnknown_085CEBB8 = {gDexArrows_Pal, 5526}; +const struct SpriteSheet gUnknown_085CEBB0 = {gDexArrows_Gfx, sizeof(gDexArrows_Gfx), 5525}; + +static struct LearnMoveStruct *sLearnMoveStruct; +static void sub_8160664(u8 taskId); +void sub_81606A0(void); //CB2_InitLearnMove + +void sub_8160624(void) //VBlankCB_LearnMove +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +void sub_8160638(void) //TeachMoveTutorMove +{ + ScriptContext2_Enable(); + CreateTask(sub_8160664, 0xA); + BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); +} + +void sub_8160664(u8 taskId) +{ + if (!gPaletteFade.active) + { + SetMainCallback2(sub_81606A0); + gFieldCallback = sub_80AF168; + DestroyTask(taskId); + } +} + +void sub_81606A0(void) //CB2_InitLearnMove +{ + ResetSpriteData(); + FreeAllSpritePalettes(); + ResetTasks(); + clear_scheduled_bg_copies_to_vram(); + + + //LearnMoveStruct** + gUnknown_0203BC34 = AllocZeroed(0x118);//gUnknown_0203BC34 is a global pointer to LearnMoveStruct ? + //r1 = &gSpecialVar_0x8004; //What is this global ? + //u8* partyMon = gUnknown_0203BC34 + 0x44 //partyMon ? + //*partyMon = r1; + gUnknown_0203BC34->partyMon = gSpecialVar_0x8004; + + SetVBlankCallback(sub_8160624); + sub_81607EC(); + sub_81D2824(0); + + //pointer to ? + (&gUnknown_0203BC38)[0] = 0; + (&gUnknown_0203BC38)[2] = 0; + (&gUnknown_0203BC38)[4] = 0; + + sub_8161280(); + LoadSpriteSheet(&gUnknown_085CEBB0); + LoadSpritePalette(&gUnknown_085CEBB8); + sub_81610B8(); + + ListMenuInit(&gMultiuseListMenuTemplate, 0, 0); + FillPalette(0, 0, 2); + SetMainCallback2(sub_816082C); +} -- cgit v1.2.3 From 990784a6d91a9b119ff974e3594a7bd5070549fc Mon Sep 17 00:00:00 2001 From: Edouard Veyrier Date: Wed, 28 Mar 2018 21:45:35 +0200 Subject: Improve comments --- src/learn_move.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/learn_move.c b/src/learn_move.c index 3a1ac72f4..36bf76eff 100644 --- a/src/learn_move.c +++ b/src/learn_move.c @@ -14,7 +14,7 @@ extern void (*gFieldCallback)(void); extern struct LearnMoveStruct *gUnknown_0203BC34; -// Ew, just copied from poeruby... +// Ew, just copied from pokeruby... const u16 gDexArrows_Pal[] = INCBIN_U16("graphics/pokedex/arrows.gbapal"); const u8 gDexArrows_Gfx[] = INCBIN_U8("graphics/pokedex/arrows.4bpp"); const struct SpritePalette gUnknown_085CEBB8 = {gDexArrows_Pal, 5526}; @@ -50,6 +50,7 @@ void sub_8160664(u8 taskId) void sub_81606A0(void) //CB2_InitLearnMove { + //Less calls than pokeruby, is it normal ? ResetSpriteData(); FreeAllSpritePalettes(); ResetTasks(); @@ -57,17 +58,17 @@ void sub_81606A0(void) //CB2_InitLearnMove //LearnMoveStruct** - gUnknown_0203BC34 = AllocZeroed(0x118);//gUnknown_0203BC34 is a global pointer to LearnMoveStruct ? //r1 = &gSpecialVar_0x8004; //What is this global ? //u8* partyMon = gUnknown_0203BC34 + 0x44 //partyMon ? //*partyMon = r1; + gUnknown_0203BC34 = AllocZeroed(0x118);//gUnknown_0203BC34 is a global pointer to LearnMoveStruct ? gUnknown_0203BC34->partyMon = gSpecialVar_0x8004; SetVBlankCallback(sub_8160624); sub_81607EC(); sub_81D2824(0); - //pointer to ? + //gUnknown_0203BC38 ? (&gUnknown_0203BC38)[0] = 0; (&gUnknown_0203BC38)[2] = 0; (&gUnknown_0203BC38)[4] = 0; -- cgit v1.2.3 From cfacd23248ba56f5bca30895154625a06761ab45 Mon Sep 17 00:00:00 2001 From: Edouard Veyrier Date: Thu, 29 Mar 2018 11:56:10 +0200 Subject: Fix temporarily --- src/learn_move.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/learn_move.c b/src/learn_move.c index 36bf76eff..d75e0a460 100644 --- a/src/learn_move.c +++ b/src/learn_move.c @@ -14,12 +14,6 @@ extern void (*gFieldCallback)(void); extern struct LearnMoveStruct *gUnknown_0203BC34; -// Ew, just copied from pokeruby... -const u16 gDexArrows_Pal[] = INCBIN_U16("graphics/pokedex/arrows.gbapal"); -const u8 gDexArrows_Gfx[] = INCBIN_U8("graphics/pokedex/arrows.4bpp"); -const struct SpritePalette gUnknown_085CEBB8 = {gDexArrows_Pal, 5526}; -const struct SpriteSheet gUnknown_085CEBB0 = {gDexArrows_Gfx, sizeof(gDexArrows_Gfx), 5525}; - static struct LearnMoveStruct *sLearnMoveStruct; static void sub_8160664(u8 taskId); void sub_81606A0(void); //CB2_InitLearnMove @@ -50,6 +44,12 @@ void sub_8160664(u8 taskId) void sub_81606A0(void) //CB2_InitLearnMove { + //FIXME + void (*sub_81607EC)(void) = (void*)0x081607EC; + void (*sub_81D2824)(void*) = (void*)0x081D2824; + void (*sub_81610B8)(void) = (void*)0x081610B8; + void (*sub_8161280)(void) = (void*)0x08161280; + //Less calls than pokeruby, is it normal ? ResetSpriteData(); FreeAllSpritePalettes(); @@ -74,11 +74,11 @@ void sub_81606A0(void) //CB2_InitLearnMove (&gUnknown_0203BC38)[4] = 0; sub_8161280(); - LoadSpriteSheet(&gUnknown_085CEBB0); - LoadSpritePalette(&gUnknown_085CEBB8); + LoadSpriteSheet(/*FIXME &gUnknown_085CEBB0*/(void*)0x085CEBB0); + LoadSpritePalette(/*FIXME &gUnknown_085CEBB8*/(void*)0x085CEBB8); sub_81610B8(); ListMenuInit(&gMultiuseListMenuTemplate, 0, 0); FillPalette(0, 0, 2); - SetMainCallback2(sub_816082C); + SetMainCallback2(/*FIXME sub_816082C*/(void*)0x0816082C); } -- cgit v1.2.3 From 17b9f5d892ad34e4af3b407e2ee44a83506ee2f3 Mon Sep 17 00:00:00 2001 From: Edouard Veyrier Date: Thu, 29 Mar 2018 15:46:10 +0200 Subject: Fix compile error --- src/learn_move.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/learn_move.c b/src/learn_move.c index d75e0a460..f83707624 100644 --- a/src/learn_move.c +++ b/src/learn_move.c @@ -17,6 +17,7 @@ extern struct LearnMoveStruct *gUnknown_0203BC34; static struct LearnMoveStruct *sLearnMoveStruct; static void sub_8160664(u8 taskId); void sub_81606A0(void); //CB2_InitLearnMove +void sub_8160740(void); void sub_8160624(void) //VBlankCB_LearnMove { @@ -56,7 +57,6 @@ void sub_81606A0(void) //CB2_InitLearnMove ResetTasks(); clear_scheduled_bg_copies_to_vram(); - //LearnMoveStruct** //r1 = &gSpecialVar_0x8004; //What is this global ? //u8* partyMon = gUnknown_0203BC34 + 0x44 //partyMon ? @@ -82,3 +82,17 @@ void sub_81606A0(void) //CB2_InitLearnMove FillPalette(0, 0, 2); SetMainCallback2(/*FIXME sub_816082C*/(void*)0x0816082C); } + +/* +void sub_8160740(void) +{ + ResetSpriteData(); + FreeAllSpritePalettes(); + ResetTasks(); + clear_scheduled_bg_copies_to_vram(); + + gUnknown_0203BC34 = AllocZeroed(0x118);//gUnknown_0203BC34 is a global pointer to LearnMoveStruct ? + gUnknown_0203BC34->partyMon = gSpecialVar_0x8004; + gUnknown_0203BC34->unk2C6 = gSpecialVar_0x8005; +} +*/ -- cgit v1.2.3 From 09e29a5cf8695cf43fe8ac18004049b07a59ccc5 Mon Sep 17 00:00:00 2001 From: Edouard Veyrier Date: Sun, 1 Apr 2018 18:22:09 +0200 Subject: Fix three functions to have the right checksum --- src/learn_move.c | 129 ++++++++++++++++++++++++++++++++----------------------- 1 file changed, 75 insertions(+), 54 deletions(-) (limited to 'src') diff --git a/src/learn_move.c b/src/learn_move.c index f83707624..faa73a2d0 100644 --- a/src/learn_move.c +++ b/src/learn_move.c @@ -30,7 +30,7 @@ void sub_8160638(void) //TeachMoveTutorMove { ScriptContext2_Enable(); CreateTask(sub_8160664, 0xA); - BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); } void sub_8160664(u8 taskId) @@ -43,56 +43,77 @@ void sub_8160664(u8 taskId) } } -void sub_81606A0(void) //CB2_InitLearnMove -{ - //FIXME - void (*sub_81607EC)(void) = (void*)0x081607EC; - void (*sub_81D2824)(void*) = (void*)0x081D2824; - void (*sub_81610B8)(void) = (void*)0x081610B8; - void (*sub_8161280)(void) = (void*)0x08161280; - - //Less calls than pokeruby, is it normal ? - ResetSpriteData(); - FreeAllSpritePalettes(); - ResetTasks(); - clear_scheduled_bg_copies_to_vram(); - - //LearnMoveStruct** - //r1 = &gSpecialVar_0x8004; //What is this global ? - //u8* partyMon = gUnknown_0203BC34 + 0x44 //partyMon ? - //*partyMon = r1; - gUnknown_0203BC34 = AllocZeroed(0x118);//gUnknown_0203BC34 is a global pointer to LearnMoveStruct ? - gUnknown_0203BC34->partyMon = gSpecialVar_0x8004; - - SetVBlankCallback(sub_8160624); - sub_81607EC(); - sub_81D2824(0); - - //gUnknown_0203BC38 ? - (&gUnknown_0203BC38)[0] = 0; - (&gUnknown_0203BC38)[2] = 0; - (&gUnknown_0203BC38)[4] = 0; - - sub_8161280(); - LoadSpriteSheet(/*FIXME &gUnknown_085CEBB0*/(void*)0x085CEBB0); - LoadSpritePalette(/*FIXME &gUnknown_085CEBB8*/(void*)0x085CEBB8); - sub_81610B8(); - - ListMenuInit(&gMultiuseListMenuTemplate, 0, 0); - FillPalette(0, 0, 2); - SetMainCallback2(/*FIXME sub_816082C*/(void*)0x0816082C); -} - -/* -void sub_8160740(void) -{ - ResetSpriteData(); - FreeAllSpritePalettes(); - ResetTasks(); - clear_scheduled_bg_copies_to_vram(); - - gUnknown_0203BC34 = AllocZeroed(0x118);//gUnknown_0203BC34 is a global pointer to LearnMoveStruct ? - gUnknown_0203BC34->partyMon = gSpecialVar_0x8004; - gUnknown_0203BC34->unk2C6 = gSpecialVar_0x8005; -} -*/ +// void sub_81606A0(void) //CB2_InitLearnMove +// { +// //FIXME +// void (*sub_81607EC)(void) = (void*)0x081607EC; +// void (*sub_81D2824)(u16) = (void*)0x081D2824; +// void (*sub_81610B8)(void) = (void*)0x081610B8; +// void (*sub_8161280)(void) = (void*)0x08161280; +// +// //Less calls than pokeruby, is it normal ? +// ResetSpriteData(); +// FreeAllSpritePalettes(); +// ResetTasks(); +// clear_scheduled_bg_copies_to_vram(); +// +// //LearnMoveStruct** +// //r1 = &gSpecialVar_0x8004; //What is this global ? +// //u8* partyMon = gUnknown_0203BC34 + 0x44 //partyMon ? +// //*partyMon = r1; +// gUnknown_0203BC34 = AllocZeroed(0x118);//gUnknown_0203BC34 is a global pointer to LearnMoveStruct ? +// gUnknown_0203BC34->partyMon = gSpecialVar_0x8004; +// +// SetVBlankCallback(sub_8160624); +// sub_81607EC(); +// sub_81D2824(0); +// +// //gUnknown_0203BC38 ? +// (gUnknown_0203BC38)[0] = 0; +// (gUnknown_0203BC38)[2] = 0; +// (gUnknown_0203BC38)[4] = 0; +// +// sub_8161280(); +// LoadSpriteSheet(/*FIXME &gUnknown_085CEBB0*/(void*)0x085CEBB0); +// LoadSpritePalette(/*FIXME &gUnknown_085CEBB8*/(void*)0x085CEBB8); +// sub_81610B8(); +// +// ListMenuInit(&gMultiuseListMenuTemplate, 0, 0); +// FillPalette(0, 0, 2); +// SetMainCallback2(/*FIXME sub_816082C*/(void*)0x0816082C); +// } +// +// void sub_8160740(void) +// { +// void (*sub_81607EC)(void) = (void*)0x081607EC; +// void (*sub_81D2824)(u16) = (void*)0x081D2824; +// void (*sub_81610B8)(void) = (void*)0x081610B8; +// void (*sub_8161280)(void) = (void*)0x08161280; +// +// u8 data; +// +// ResetSpriteData(); +// FreeAllSpritePalettes(); +// ResetTasks(); +// clear_scheduled_bg_copies_to_vram(); +// +// gUnknown_0203BC34 = AllocZeroed(0x118);//gUnknown_0203BC34 is a global pointer to LearnMoveStruct ? +// gUnknown_0203BC34->partyMon = gSpecialVar_0x8004; //gUnknown_0203BC34 + 68 +// gUnknown_0203BC34->unk2C6 = gSpecialVar_0x8005; //gUnknown_0203BC34 + 69 +// +// SetVBlankCallback(sub_8160624); +// sub_81607EC(); +// +// //gUnknown_0203BC38 ? +// sub_81D2824(*((u8*)&gUnknown_0203BC38 + 4)); +// sub_8161280(); +// +// LoadSpriteSheet(/*FIXME &gUnknown_085CEBB0*/(void*)0x085CEBB0); +// LoadSpritePalette(/*FIXME &gUnknown_085CEBB8*/(void*)0x085CEBB8); +// +// data = ListMenuInit(&gMultiuseListMenuTemplate, *gUnknown_0203BC38, *((u8*)gUnknown_0203BC38 + 2)); +// *(u8*)(gUnknown_0203BC34 + 274) = data; +// FillPalette(0, 0, 2); +// SetMainCallback2(/*FIXME sub_816082C*/(void*)0x0816082C); +// } +// */ -- cgit v1.2.3 From b2e8ee836d6334e525df3163d7b018b64f68ec95 Mon Sep 17 00:00:00 2001 From: Edouard Veyrier Date: Mon, 2 Apr 2018 20:06:40 +0200 Subject: sub_81607EC and sub_816082C --- src/learn_move.c | 98 ++++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 74 insertions(+), 24 deletions(-) (limited to 'src') diff --git a/src/learn_move.c b/src/learn_move.c index faa73a2d0..0f5063fae 100644 --- a/src/learn_move.c +++ b/src/learn_move.c @@ -5,20 +5,34 @@ #include "sprite.h" #include "palette.h" #include "menu.h" +#include "menu_helpers.h" #include "list_menu.h" #include "malloc.h" #include "field_screen.h" #include "event_data.h" +#include "bg.h" +#include "gpu_regs.h" #include "learn_move.h" +EWRAM_DATA u8 *gUnknown_0203BC34 = 0; +EWRAM_DATA u8 gUnknown_0203BC38[8] = {0}; + extern void (*gFieldCallback)(void); -extern struct LearnMoveStruct *gUnknown_0203BC34; +extern const struct SpritePalette gUnknown_085CEBB8; +extern const struct SpriteSheet gUnknown_085CEBB0; +extern const struct BgTemplate gUnknown_085CEC28; +extern void sub_81D2824(u16); +//extern struct LearnMoveStruct *gUnknown_0203BC34; + +//static struct LearnMoveStruct *sLearnMoveStruct; -static struct LearnMoveStruct *sLearnMoveStruct; static void sub_8160664(u8 taskId); void sub_81606A0(void); //CB2_InitLearnMove void sub_8160740(void); +void sub_81607EC(void); +void sub_816082C(void); + void sub_8160624(void) //VBlankCB_LearnMove { LoadOam(); @@ -45,12 +59,9 @@ void sub_8160664(u8 taskId) // void sub_81606A0(void) //CB2_InitLearnMove // { -// //FIXME -// void (*sub_81607EC)(void) = (void*)0x081607EC; -// void (*sub_81D2824)(u16) = (void*)0x081D2824; -// void (*sub_81610B8)(void) = (void*)0x081610B8; -// void (*sub_8161280)(void) = (void*)0x08161280; -// +// //AGBPrint("test\n"); +// //AGBPrintFlush(); +// //NoCashGBAPrint("test\n"); // //Less calls than pokeruby, is it normal ? // ResetSpriteData(); // FreeAllSpritePalettes(); @@ -58,34 +69,46 @@ void sub_8160664(u8 taskId) // clear_scheduled_bg_copies_to_vram(); // // //LearnMoveStruct** -// //r1 = &gSpecialVar_0x8004; //What is this global ? -// //u8* partyMon = gUnknown_0203BC34 + 0x44 //partyMon ? -// //*partyMon = r1; // gUnknown_0203BC34 = AllocZeroed(0x118);//gUnknown_0203BC34 is a global pointer to LearnMoveStruct ? -// gUnknown_0203BC34->partyMon = gSpecialVar_0x8004; +// //gUnknown_0203BC34->movesToLearn[0] = gSpecialVar_0x8004; +// ((u8*)gUnknown_0203BC34)[68] = gSpecialVar_0x8004; // // SetVBlankCallback(sub_8160624); +// //SetVBlankCallback(/*FIXME sub_8160624*/ (void()(u16))0x081D2824); // sub_81607EC(); // sub_81D2824(0); // // //gUnknown_0203BC38 ? +// // weird instruction // (gUnknown_0203BC38)[0] = 0; // (gUnknown_0203BC38)[2] = 0; // (gUnknown_0203BC38)[4] = 0; // -// sub_8161280(); -// LoadSpriteSheet(/*FIXME &gUnknown_085CEBB0*/(void*)0x085CEBB0); -// LoadSpritePalette(/*FIXME &gUnknown_085CEBB8*/(void*)0x085CEBB8); -// sub_81610B8(); +// //FIXME +// //sub_8161280(); +// __asm__("bl sub_8161280"); +// +// //LoadSpriteSheet(/*FIXME &gUnknown_085CEBB0*/(void*)0x085CEBB0); +// //LoadSpritePalette(/*FIXME &gUnknown_085CEBB8*/(void*)0x085CEBB8); +// LoadSpriteSheet(&gUnknown_085CEBB0); +// LoadSpritePalette(&gUnknown_085CEBB8); +// //sub_81610B8(); +// //FIXME +// __asm__("bl sub_81610B8"); // -// ListMenuInit(&gMultiuseListMenuTemplate, 0, 0); +// ((u8*)gUnknown_0203BC34)[274] = ListMenuInit(&gMultiuseListMenuTemplate, gUnknown_0203BC38[0], gUnknown_0203BC38[2]); // FillPalette(0, 0, 2); -// SetMainCallback2(/*FIXME sub_816082C*/(void*)0x0816082C); +// //SetMainCallback2(sub_816082C/*(void*)0x0816082C()*/); +// //SetMainCallback2(sub_816082C/*(void*)0x0816082C()*/); +// //FIXME +// __asm__( +// "ldr r0, =sub_816082C", +// "bl SetMainCallback2" +// ); // } -// + // void sub_8160740(void) // { -// void (*sub_81607EC)(void) = (void*)0x081607EC; // void (*sub_81D2824)(u16) = (void*)0x081D2824; // void (*sub_81610B8)(void) = (void*)0x081610B8; // void (*sub_8161280)(void) = (void*)0x08161280; @@ -105,15 +128,42 @@ void sub_8160664(u8 taskId) // sub_81607EC(); // // //gUnknown_0203BC38 ? -// sub_81D2824(*((u8*)&gUnknown_0203BC38 + 4)); +// sub_81D2824(gUnknown_0203BC38[4]); // sub_8161280(); // -// LoadSpriteSheet(/*FIXME &gUnknown_085CEBB0*/(void*)0x085CEBB0); -// LoadSpritePalette(/*FIXME &gUnknown_085CEBB8*/(void*)0x085CEBB8); +// LoadSpriteSheet(&gUnknown_085CEBB0); +// LoadSpritePalette(&gUnknown_085CEBB8); +// //LoadSpriteSheet(/*FIXME &gUnknown_085CEBB0*/(void*)0x085CEBB0); +// //LoadSpritePalette(/*FIXME &gUnknown_085CEBB8*/(void*)0x085CEBB8); // // data = ListMenuInit(&gMultiuseListMenuTemplate, *gUnknown_0203BC38, *((u8*)gUnknown_0203BC38 + 2)); // *(u8*)(gUnknown_0203BC34 + 274) = data; // FillPalette(0, 0, 2); // SetMainCallback2(/*FIXME sub_816082C*/(void*)0x0816082C); // } -// */ + +void sub_81607EC(void) +{ + ResetVramOamAndBgCntRegs(); + ResetBgsAndClearDma3BusyFlags(0); + InitBgsFromTemplates(0, &gUnknown_085CEC28, 2); + ResetAllBgsCoordinates(); + SetGpuReg(0, 0x1040); + ShowBg(0); + ShowBg(1); + SetGpuReg(0x50, 0); +} +void sub_816082C(void) +{ + //FIXME + //sub_8160868(); + //void(*sub_8160868)(void) = (void (*)(void))0x08160868; + //sub_8160868(); + __asm__("bl sub_8160868"); + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + do_scheduled_bg_tilemap_copies_to_vram(); + UpdatePaletteFade(); + +} -- cgit v1.2.3 From 2f96282c7f56ae90bc62b2710c8430abd2b345f3 Mon Sep 17 00:00:00 2001 From: Edouard Veyrier Date: Tue, 3 Apr 2018 00:07:55 +0200 Subject: cleaner --- src/learn_move.c | 156 ++++++++++++++++++++++--------------------------------- 1 file changed, 63 insertions(+), 93 deletions(-) (limited to 'src') diff --git a/src/learn_move.c b/src/learn_move.c index 0f5063fae..addae6a38 100644 --- a/src/learn_move.c +++ b/src/learn_move.c @@ -22,14 +22,15 @@ extern const struct SpritePalette gUnknown_085CEBB8; extern const struct SpriteSheet gUnknown_085CEBB0; extern const struct BgTemplate gUnknown_085CEC28; extern void sub_81D2824(u16); -//extern struct LearnMoveStruct *gUnknown_0203BC34; -//static struct LearnMoveStruct *sLearnMoveStruct; +void sub_8160868(void); +void sub_8161280(void); +void sub_81610B8(void); +void sub_816082C(void); static void sub_8160664(u8 taskId); void sub_81606A0(void); //CB2_InitLearnMove void sub_8160740(void); - void sub_81607EC(void); void sub_816082C(void); @@ -57,90 +58,63 @@ void sub_8160664(u8 taskId) } } -// void sub_81606A0(void) //CB2_InitLearnMove -// { -// //AGBPrint("test\n"); -// //AGBPrintFlush(); -// //NoCashGBAPrint("test\n"); -// //Less calls than pokeruby, is it normal ? -// ResetSpriteData(); -// FreeAllSpritePalettes(); -// ResetTasks(); -// clear_scheduled_bg_copies_to_vram(); -// -// //LearnMoveStruct** -// gUnknown_0203BC34 = AllocZeroed(0x118);//gUnknown_0203BC34 is a global pointer to LearnMoveStruct ? -// //gUnknown_0203BC34->movesToLearn[0] = gSpecialVar_0x8004; -// ((u8*)gUnknown_0203BC34)[68] = gSpecialVar_0x8004; -// -// SetVBlankCallback(sub_8160624); -// //SetVBlankCallback(/*FIXME sub_8160624*/ (void()(u16))0x081D2824); -// sub_81607EC(); -// sub_81D2824(0); -// -// //gUnknown_0203BC38 ? -// // weird instruction -// (gUnknown_0203BC38)[0] = 0; -// (gUnknown_0203BC38)[2] = 0; -// (gUnknown_0203BC38)[4] = 0; -// -// //FIXME -// //sub_8161280(); -// __asm__("bl sub_8161280"); -// -// //LoadSpriteSheet(/*FIXME &gUnknown_085CEBB0*/(void*)0x085CEBB0); -// //LoadSpritePalette(/*FIXME &gUnknown_085CEBB8*/(void*)0x085CEBB8); -// LoadSpriteSheet(&gUnknown_085CEBB0); -// LoadSpritePalette(&gUnknown_085CEBB8); -// //sub_81610B8(); -// //FIXME -// __asm__("bl sub_81610B8"); -// -// ((u8*)gUnknown_0203BC34)[274] = ListMenuInit(&gMultiuseListMenuTemplate, gUnknown_0203BC38[0], gUnknown_0203BC38[2]); -// FillPalette(0, 0, 2); -// //SetMainCallback2(sub_816082C/*(void*)0x0816082C()*/); -// //SetMainCallback2(sub_816082C/*(void*)0x0816082C()*/); -// //FIXME -// __asm__( -// "ldr r0, =sub_816082C", -// "bl SetMainCallback2" -// ); -// } - -// void sub_8160740(void) -// { -// void (*sub_81D2824)(u16) = (void*)0x081D2824; -// void (*sub_81610B8)(void) = (void*)0x081610B8; -// void (*sub_8161280)(void) = (void*)0x08161280; -// -// u8 data; -// -// ResetSpriteData(); -// FreeAllSpritePalettes(); -// ResetTasks(); -// clear_scheduled_bg_copies_to_vram(); -// -// gUnknown_0203BC34 = AllocZeroed(0x118);//gUnknown_0203BC34 is a global pointer to LearnMoveStruct ? -// gUnknown_0203BC34->partyMon = gSpecialVar_0x8004; //gUnknown_0203BC34 + 68 -// gUnknown_0203BC34->unk2C6 = gSpecialVar_0x8005; //gUnknown_0203BC34 + 69 -// -// SetVBlankCallback(sub_8160624); -// sub_81607EC(); -// -// //gUnknown_0203BC38 ? -// sub_81D2824(gUnknown_0203BC38[4]); -// sub_8161280(); -// -// LoadSpriteSheet(&gUnknown_085CEBB0); -// LoadSpritePalette(&gUnknown_085CEBB8); -// //LoadSpriteSheet(/*FIXME &gUnknown_085CEBB0*/(void*)0x085CEBB0); -// //LoadSpritePalette(/*FIXME &gUnknown_085CEBB8*/(void*)0x085CEBB8); -// -// data = ListMenuInit(&gMultiuseListMenuTemplate, *gUnknown_0203BC38, *((u8*)gUnknown_0203BC38 + 2)); -// *(u8*)(gUnknown_0203BC34 + 274) = data; -// FillPalette(0, 0, 2); -// SetMainCallback2(/*FIXME sub_816082C*/(void*)0x0816082C); -// } +// Doesn't match +void sub_81606A0(void) //CB2_InitLearnMove +{ + ResetSpriteData(); + FreeAllSpritePalettes(); + ResetTasks(); + clear_scheduled_bg_copies_to_vram(); + + gUnknown_0203BC34 = AllocZeroed(0x118); //gUnknown_0203BC34 ? + gUnknown_0203BC34[68] = gSpecialVar_0x8004; + + SetVBlankCallback(sub_8160624); + sub_81607EC(); + sub_81D2824(0); + + //gUnknown_0203BC38 ? + gUnknown_0203BC38[0] = 0; + gUnknown_0203BC38[2] = 0; + gUnknown_0203BC38[4] = 0; + + sub_8161280(); + + LoadSpriteSheet(&gUnknown_085CEBB0); + LoadSpritePalette(&gUnknown_085CEBB8); + sub_81610B8(); + + gUnknown_0203BC34[274] = ListMenuInit(&gMultiuseListMenuTemplate, gUnknown_0203BC38[0], gUnknown_0203BC38[2]); + FillPalette(0, 0, 2); + SetMainCallback2(sub_816082C); +} + +// Doesn't match +void sub_8160740(void) +{ + ResetSpriteData(); + FreeAllSpritePalettes(); + ResetTasks(); + clear_scheduled_bg_copies_to_vram(); + + gUnknown_0203BC34 = AllocZeroed(0x118); //gUnknown_0203BC34 ? + gUnknown_0203BC34[68] = gSpecialVar_0x8004; + gUnknown_0203BC34[69] = gSpecialVar_0x8005; + + SetVBlankCallback(sub_8160624); + sub_81607EC(); + + //gUnknown_0203BC38 ? + sub_81D2824(gUnknown_0203BC38[4]); + sub_8161280(); + + LoadSpriteSheet(&gUnknown_085CEBB0); + LoadSpritePalette(&gUnknown_085CEBB8); + + gUnknown_0203BC34[274] = ListMenuInit(&gMultiuseListMenuTemplate, gUnknown_0203BC38[0], gUnknown_0203BC38[2]); + FillPalette(0, 0, 2); + SetMainCallback2(sub_816082C); +} void sub_81607EC(void) { @@ -153,17 +127,13 @@ void sub_81607EC(void) ShowBg(1); SetGpuReg(0x50, 0); } + void sub_816082C(void) { - //FIXME - //sub_8160868(); - //void(*sub_8160868)(void) = (void (*)(void))0x08160868; - //sub_8160868(); - __asm__("bl sub_8160868"); + sub_8160868(); RunTasks(); AnimateSprites(); BuildOamBuffer(); do_scheduled_bg_tilemap_copies_to_vram(); UpdatePaletteFade(); - } -- cgit v1.2.3 From 2dd5fc23d4d34890e17a412ae9ad80e23c7aa50d Mon Sep 17 00:00:00 2001 From: Diegoisawesome Date: Sun, 12 Aug 2018 12:54:07 -0700 Subject: Prepare learn_move for merge --- src/battle_script_commands.c | 4 +- src/berry_blender.c | 2 +- src/clear_save_data_screen.c | 2 +- src/egg_hatch.c | 2 +- src/evolution_scene.c | 8 +- src/item_menu.c | 2 +- src/learn_move.c | 877 ++++++++++++++++++++++++++++++++++++++----- src/main_menu.c | 4 +- src/menu.c | 8 +- src/menu_helpers.c | 2 +- src/player_pc.c | 4 +- src/pokeblock.c | 2 +- src/pokemon_summary_screen.c | 2 +- src/secret_base.c | 2 +- src/start_menu.c | 6 +- src/starter_choose.c | 2 +- src/wallclock.c | 2 +- 17 files changed, 817 insertions(+), 114 deletions(-) (limited to 'src') diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 7f5a4fb48..b13727a12 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -55,7 +55,7 @@ extern const u8* const gBattleScriptsForMoveEffects[]; // functions extern void sub_81A5718(u8 battlerId); // battle frontier 2 extern void sub_81A56B4(void); // battle frontier 2 -extern void sub_81BFA38(struct Pokemon* party, u8 monPartyId, u8 monCount, void (*callback)(void), u16 move); // pokemon summary screen +extern void ShowSelectMovePokemonSummaryScreen(struct Pokemon* party, u8 monPartyId, u8 monCount, void (*callback)(void), u16 move); // pokemon summary screen extern u8 sub_81C1B94(void); // pokemon summary screen extern void sub_81D388C(struct Pokemon* mon, void* statStoreLocation); // pokenav.s extern void sub_81D3640(u8 arg0, void* statStoreLocation1, void* statStoreLocation2, u8 arg3, u8 arg4, u8 arg5); // pokenav.s @@ -5732,7 +5732,7 @@ static void atk5A_yesnoboxlearnmove(void) if (!gPaletteFade.active) { FreeAllWindowBuffers(); - sub_81BFA38(gPlayerParty, gBattleStruct->expGetterMonId, gPlayerPartyCount - 1, ReshowBattleScreenAfterMenu, gMoveToLearn); + ShowSelectMovePokemonSummaryScreen(gPlayerParty, gBattleStruct->expGetterMonId, gPlayerPartyCount - 1, ReshowBattleScreenAfterMenu, gMoveToLearn); gBattleScripting.learnMoveState++; } break; diff --git a/src/berry_blender.c b/src/berry_blender.c index 257c7233f..46b0f76ad 100644 --- a/src/berry_blender.c +++ b/src/berry_blender.c @@ -2436,7 +2436,7 @@ static void CB2_HandleBlenderEndGame(void) sBerryBlenderData->gameEndState++; break; case 10: - switch (ProcessMenuInputNoWrap_()) + switch (Menu_ProcessInputNoWrap_()) { case 1: case -1: diff --git a/src/clear_save_data_screen.c b/src/clear_save_data_screen.c index 266ea8250..5c1f7db20 100644 --- a/src/clear_save_data_screen.c +++ b/src/clear_save_data_screen.c @@ -86,7 +86,7 @@ static void Task_DoClearSaveDataScreenYesNo(u8 taskId) static void Task_ClearSaveDataScreenYesNoChoice(u8 taskId) { - switch(ProcessMenuInputNoWrap_()) + switch(Menu_ProcessInputNoWrap_()) { case 0: FillWindowPixelBuffer(0, 17); diff --git a/src/egg_hatch.c b/src/egg_hatch.c index 67876f33b..ab0cd92a2 100644 --- a/src/egg_hatch.c +++ b/src/egg_hatch.c @@ -659,7 +659,7 @@ static void CB2_EggHatch_1(void) } break; case 10: - switch (ProcessMenuInputNoWrap_()) + switch (Menu_ProcessInputNoWrap_()) { case 0: GetMonNick(&gPlayerParty[sEggHatchData->eggPartyID], gStringVar3); diff --git a/src/evolution_scene.c b/src/evolution_scene.c index f039c5f24..7960d6cba 100644 --- a/src/evolution_scene.c +++ b/src/evolution_scene.c @@ -66,7 +66,7 @@ extern void sub_807F19C(void); extern void sub_807B140(void); extern void EvolutionRenameMon(struct Pokemon *mon, u16 oldSpecies, u16 newSpecies); extern void Overworld_PlaySpecialMapMusic(void); -extern void sub_81BFA38(struct Pokemon *party, u8 monId, u8 partyCount, void *CB2_ptr, u16 move); +extern void ShowSelectMovePokemonSummaryScreen(struct Pokemon *party, u8 monId, u8 partyCount, void *CB2_ptr, u16 move); extern u8 sub_81C1B94(void); extern void sub_807F1A8(u8 arg0, const u8 *arg1, u8 arg2); extern void sub_800E084(void); @@ -918,7 +918,7 @@ static void Task_EvolutionScene(u8 taskID) if (!gPaletteFade.active) { FreeAllWindowBuffers(); - sub_81BFA38(gPlayerParty, gTasks[taskID].tPartyID, + ShowSelectMovePokemonSummaryScreen(gPlayerParty, gTasks[taskID].tPartyID, gPlayerPartyCount - 1, CB2_EvolutionSceneLoadGraphics, gMoveToLearn); gTasks[taskID].tLearnMoveState++; @@ -1222,7 +1222,7 @@ static void Task_TradeEvolutionScene(u8 taskID) } break; case 4: - switch (ProcessMenuInputNoWrap_()) + switch (Menu_ProcessInputNoWrap_()) { case 0: sEvoCursorPos = 0; @@ -1252,7 +1252,7 @@ static void Task_TradeEvolutionScene(u8 taskID) Free(GetBgTilemapBuffer(0)); FreeAllWindowBuffers(); - sub_81BFA38(gPlayerParty, gTasks[taskID].tPartyID, + ShowSelectMovePokemonSummaryScreen(gPlayerParty, gTasks[taskID].tPartyID, gPlayerPartyCount - 1, CB2_TradeEvolutionSceneLoadGraphics, gMoveToLearn); gTasks[taskID].tLearnMoveState++; diff --git a/src/item_menu.c b/src/item_menu.c index d134e6375..f58c2b8b3 100755 --- a/src/item_menu.c +++ b/src/item_menu.c @@ -1369,7 +1369,7 @@ void Task_HandleInBattleItemMenuInput(u8 taskId) { if (sub_81221EC() != TRUE) { - s8 r4 = ProcessMenuInputNoWrapAround(); + s8 r4 = Menu_ProcessInputNoWrapAround(); switch (r4) { case -2: diff --git a/src/learn_move.c b/src/learn_move.c index addae6a38..b65fd2045 100644 --- a/src/learn_move.c +++ b/src/learn_move.c @@ -1,26 +1,219 @@ #include "global.h" #include "main.h" -#include "task.h" -#include "script.h" -#include "sprite.h" -#include "palette.h" -#include "menu.h" -#include "menu_helpers.h" -#include "list_menu.h" -#include "malloc.h" -#include "field_screen.h" -#include "event_data.h" #include "bg.h" +#include "data2.h" +#include "event_data.h" +#include "field_screen.h" #include "gpu_regs.h" #include "learn_move.h" +#include "list_menu.h" +#include "malloc.h" +#include "menu.h" +#include "menu_helpers.h" +#include "overworld.h" +#include "palette.h" +#include "pokemon_summary_screen.h" +#include "pokenav.h" +#include "script.h" +#include "sound.h" +#include "sprite.h" +#include "string_util.h" +#include "strings.h" +#include "task.h" +#include "constants/rgb.h" +#include "constants/songs.h" + +struct LearnMoveStruct +{ + u8 state; + u8 spriteIds[16]; /*0x001*/ + u8 filler11; /*0x011*/ + u16 movesToLearn[4]; /*0x012*/ + u8 filler1A[0x44 - 0x1A]; /*0x01A*/ + u8 partyMon; /*0x044*/ + u8 unk045; /*0x045*/ + u8 filler46[2]; /*0x046*/ + struct ListMenuItem menuItems[4]; /*0x048*/ + u8 filler68[0x110 - 0x68]; /*0x068*/ + u8 numMenuChoices; /*0x110*/ + u8 unk111; /*0x111*/ + u8 listMenuTask; /*0x112*/ + u8 unk113; /*0x113*/ + u8 unk114; /*0x114*/ + u16 unk116; /*0x116*/ +}; -EWRAM_DATA u8 *gUnknown_0203BC34 = 0; -EWRAM_DATA u8 gUnknown_0203BC38[8] = {0}; +EWRAM_DATA struct LearnMoveStruct *sLearnMoveStruct = {0}; +EWRAM_DATA struct { + u16 listOffset; + u16 listRow; + u8 showContestInfo; +} gUnknown_0203BC38 = {0}; extern void (*gFieldCallback)(void); -extern const struct SpritePalette gUnknown_085CEBB8; -extern const struct SpriteSheet gUnknown_085CEBB0; -extern const struct BgTemplate gUnknown_085CEC28; + +const u16 gUnknown_085CE9F8[] = INCBIN_U16("graphics/interface/ui_learn_move.gbapal"); +const u8 gUnknown_085CEA18[] = INCBIN_U8("graphics/interface/ui_learn_move.4bpp"); + +const struct OamData gUnknown_085CEB98 = +{ + .y = 0, + .affineMode = 0, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = 0, + .bpp = ST_OAM_4BPP, + .shape = ST_OAM_SQUARE, + .x = 0, + .matrixNum = 0, + .size = 0, + .tileNum = 0, + .priority = 0, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gUnknown_085CEBA0 = +{ + .y = 0, + .affineMode = 0, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = 0, + .bpp = ST_OAM_4BPP, + .shape = ST_OAM_V_RECTANGLE, + .x = 0, + .matrixNum = 0, + .size = 0, + .tileNum = 0, + .priority = 0, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gUnknown_085CEBA8 = +{ + .y = 0, + .affineMode = 0, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = 0, + .bpp = ST_OAM_4BPP, + .shape = ST_OAM_H_RECTANGLE, + .x = 0, + .matrixNum = 0, + .size = 0, + .tileNum = 0, + .priority = 0, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct SpriteSheet gUnknown_085CEBB0 = +{ + .data = gUnknown_085CEA18, + .size = 0x180, + .tag = 5525 +}; + +const struct SpritePalette gUnknown_085CEBB8 = +{ + .data = gUnknown_085CE9F8, + .tag = 5526 +}; + +const struct ScrollArrowsTemplate gUnknown_085CEBC0 = +{ + .firstArrowType = 0, + .firstX = 27, + .firstY = 16, + .secondArrowType = 1, + .secondX = 117, + .secondY = 16, + .fullyUpThreshold = -1, + .fullyDownThreshold = -1, + .tileTag = 5325, + .palTag = 5325, + .palNum = 0, +}; + +const struct ScrollArrowsTemplate gUnknown_085CEBD0 = +{ + .firstArrowType = 2, + .firstX = 192, + .firstY = 8, + .secondArrowType = 3, + .secondX = 192, + .secondY = 104, + .fullyUpThreshold = 0, + .fullyDownThreshold = 0, + .tileTag = 5425, + .palTag = 5425, + .palNum = 0, +}; + +const union AnimCmd gUnknown_085CEBE0[] = +{ + ANIMCMD_FRAME(8, 5, FALSE, FALSE), + ANIMCMD_END +}; + +const union AnimCmd gUnknown_085CEBE8[] = +{ + ANIMCMD_FRAME(9, 5, FALSE, FALSE), + ANIMCMD_END +}; + +const union AnimCmd gUnknown_085CEBF0[] = +{ + ANIMCMD_FRAME(10, 5, FALSE, FALSE), + ANIMCMD_END +}; + +const union AnimCmd gUnknown_085CEBF8[] = +{ + ANIMCMD_FRAME(11, 5, FALSE, FALSE), + ANIMCMD_END +}; + +const union AnimCmd *const gUnknown_085CEC00[] = +{ + gUnknown_085CEBE0, + gUnknown_085CEBE8, + gUnknown_085CEBF0, + gUnknown_085CEBF8, +}; + +const struct SpriteTemplate gUnknown_085CEC10 = +{ + .tileTag = 5525, + .paletteTag = 5526, + .oam = &gUnknown_085CEB98, + .anims = gUnknown_085CEC00, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy +}; + +const struct BgTemplate gUnknown_085CEC28[] = +{ + { + .bg = 0, + .charBaseIndex = 0, + .mapBaseIndex = 31, + .screenSize = 0, + .paletteMode = 0, + .priority = 0, + .baseTile = 0, + }, + { + .bg = 1, + .charBaseIndex = 0, + .mapBaseIndex = 30, + .screenSize = 0, + .paletteMode = 0, + .priority = 1, + .baseTile = 0, + }, +}; + extern void sub_81D2824(u16); void sub_8160868(void); @@ -29,111 +222,621 @@ void sub_81610B8(void); void sub_816082C(void); static void sub_8160664(u8 taskId); -void sub_81606A0(void); //CB2_InitLearnMove +void CB2_InitLearnMove(void); void sub_8160740(void); void sub_81607EC(void); void sub_816082C(void); -void sub_8160624(void) //VBlankCB_LearnMove +void VBlankCB_LearnMove(void) { - LoadOam(); - ProcessSpriteCopyRequests(); - TransferPlttBuffer(); + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); } -void sub_8160638(void) //TeachMoveTutorMove +void TeachMoveTutorMove(void) { - ScriptContext2_Enable(); - CreateTask(sub_8160664, 0xA); - BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + ScriptContext2_Enable(); + CreateTask(sub_8160664, 0xA); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0); } void sub_8160664(u8 taskId) { - if (!gPaletteFade.active) - { - SetMainCallback2(sub_81606A0); - gFieldCallback = sub_80AF168; - DestroyTask(taskId); - } + if (!gPaletteFade.active) + { + SetMainCallback2(CB2_InitLearnMove); + gFieldCallback = sub_80AF168; + DestroyTask(taskId); + } } -// Doesn't match -void sub_81606A0(void) //CB2_InitLearnMove +void CB2_InitLearnMove(void) { - ResetSpriteData(); - FreeAllSpritePalettes(); - ResetTasks(); - clear_scheduled_bg_copies_to_vram(); - - gUnknown_0203BC34 = AllocZeroed(0x118); //gUnknown_0203BC34 ? - gUnknown_0203BC34[68] = gSpecialVar_0x8004; + ResetSpriteData(); + FreeAllSpritePalettes(); + ResetTasks(); + clear_scheduled_bg_copies_to_vram(); + sLearnMoveStruct = AllocZeroed(sizeof(struct LearnMoveStruct)); + sLearnMoveStruct->partyMon = gSpecialVar_0x8004; + SetVBlankCallback(VBlankCB_LearnMove); - SetVBlankCallback(sub_8160624); - sub_81607EC(); - sub_81D2824(0); + sub_81607EC(); + sub_81D2824(0); - //gUnknown_0203BC38 ? - gUnknown_0203BC38[0] = 0; - gUnknown_0203BC38[2] = 0; - gUnknown_0203BC38[4] = 0; + gUnknown_0203BC38.listOffset = 0; + gUnknown_0203BC38.listRow = 0; + gUnknown_0203BC38.showContestInfo = 0; - sub_8161280(); + sub_8161280(); - LoadSpriteSheet(&gUnknown_085CEBB0); - LoadSpritePalette(&gUnknown_085CEBB8); - sub_81610B8(); + LoadSpriteSheet(&gUnknown_085CEBB0); + LoadSpritePalette(&gUnknown_085CEBB8); + sub_81610B8(); - gUnknown_0203BC34[274] = ListMenuInit(&gMultiuseListMenuTemplate, gUnknown_0203BC38[0], gUnknown_0203BC38[2]); - FillPalette(0, 0, 2); - SetMainCallback2(sub_816082C); + sLearnMoveStruct->listMenuTask = ListMenuInit(&gMultiuseListMenuTemplate, gUnknown_0203BC38.listOffset, gUnknown_0203BC38.listRow); + FillPalette(RGB_BLACK, 0, 2); + SetMainCallback2(sub_816082C); } -// Doesn't match void sub_8160740(void) { - ResetSpriteData(); - FreeAllSpritePalettes(); - ResetTasks(); - clear_scheduled_bg_copies_to_vram(); - - gUnknown_0203BC34 = AllocZeroed(0x118); //gUnknown_0203BC34 ? - gUnknown_0203BC34[68] = gSpecialVar_0x8004; - gUnknown_0203BC34[69] = gSpecialVar_0x8005; - - SetVBlankCallback(sub_8160624); - sub_81607EC(); + ResetSpriteData(); + FreeAllSpritePalettes(); + ResetTasks(); + clear_scheduled_bg_copies_to_vram(); + sLearnMoveStruct = AllocZeroed(sizeof(struct LearnMoveStruct)); + sLearnMoveStruct->state = 28; + sLearnMoveStruct->partyMon = gSpecialVar_0x8004; + sLearnMoveStruct->unk045 = gSpecialVar_0x8005; + SetVBlankCallback(VBlankCB_LearnMove); - //gUnknown_0203BC38 ? - sub_81D2824(gUnknown_0203BC38[4]); - sub_8161280(); + sub_81607EC(); + sub_81D2824(gUnknown_0203BC38.showContestInfo); + sub_8161280(); - LoadSpriteSheet(&gUnknown_085CEBB0); - LoadSpritePalette(&gUnknown_085CEBB8); + LoadSpriteSheet(&gUnknown_085CEBB0); + LoadSpritePalette(&gUnknown_085CEBB8); + sub_81610B8(); - gUnknown_0203BC34[274] = ListMenuInit(&gMultiuseListMenuTemplate, gUnknown_0203BC38[0], gUnknown_0203BC38[2]); - FillPalette(0, 0, 2); - SetMainCallback2(sub_816082C); + sLearnMoveStruct->listMenuTask = ListMenuInit(&gMultiuseListMenuTemplate, gUnknown_0203BC38.listOffset, gUnknown_0203BC38.listRow); + FillPalette(RGB_BLACK, 0, 2); + SetMainCallback2(sub_816082C); } void sub_81607EC(void) { - ResetVramOamAndBgCntRegs(); - ResetBgsAndClearDma3BusyFlags(0); - InitBgsFromTemplates(0, &gUnknown_085CEC28, 2); - ResetAllBgsCoordinates(); - SetGpuReg(0, 0x1040); - ShowBg(0); - ShowBg(1); - SetGpuReg(0x50, 0); + ResetVramOamAndBgCntRegs(); + ResetBgsAndClearDma3BusyFlags(0); + InitBgsFromTemplates(0, gUnknown_085CEC28, 2); + ResetAllBgsCoordinates(); + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | + DISPCNT_OBJ_1D_MAP | + DISPCNT_OBJ_ON); + ShowBg(0); + ShowBg(1); + SetGpuReg(REG_OFFSET_BLDCNT, 0); } void sub_816082C(void) { - sub_8160868(); - RunTasks(); - AnimateSprites(); - BuildOamBuffer(); - do_scheduled_bg_tilemap_copies_to_vram(); - UpdatePaletteFade(); + sub_8160868(); + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + do_scheduled_bg_tilemap_copies_to_vram(); + UpdatePaletteFade(); +} + +void sub_816084C(const u8 *src) +{ + StringExpandPlaceholders(gStringVar4, src); + sub_81D2BF4(gStringVar4); +} + +void sub_81611AC(void); +void sub_8160F50(u8); +void sub_8161074(u8); +s32 sub_8161054(void); +void sub_8160EA0(void); +void sub_8161234(void); +void render_previous_quest_text(bool8); + +void sub_8160868(void) +{ + switch (sLearnMoveStruct->state) + { + case 0: + sLearnMoveStruct->state++; + render_previous_quest_text(FALSE); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK); + break; + case 1: + if (!gPaletteFade.active) + { + sLearnMoveStruct->state = 4; + } + break; + case 2: + sLearnMoveStruct->state++; + break; + case 3: + render_previous_quest_text(FALSE); + sLearnMoveStruct->state++; + sub_81611AC(); + break; + case 4: + sub_8160F50(0); + return; + case 5: + sub_8161074(0); + sLearnMoveStruct->state++; + sub_81611AC(); + break; + case 6: + sub_8160F50(1); + break; + case 8: + if (!sub_81D2C3C()) + { + sub_81D2C50(); + sLearnMoveStruct->state++; + } + break; + case 9: + { + s8 selection = Menu_ProcessInputNoWrap_(); + + if (selection == 0) + { + if (GiveMoveToMon(&gPlayerParty[sLearnMoveStruct->partyMon], sub_8161054()) != 0xFFFF) + { + sub_816084C(gText_PkmnLearnedMove4); + gSpecialVar_0x8004 = 1; + sLearnMoveStruct->state = 31; + } + else + { + sLearnMoveStruct->state = 16; + } + } + else if (selection == -1 || selection == 1) + { + if (gUnknown_0203BC38.showContestInfo == FALSE) + { + sLearnMoveStruct->state = 3; + } + else if (gUnknown_0203BC38.showContestInfo == TRUE) + { + sLearnMoveStruct->state = 5; + } + } + } + break; + case 12: + if (!sub_81D2C3C()) + { + sub_81D2C50(); + sLearnMoveStruct->state++; + } + break; + case 13: + { + s8 selection = Menu_ProcessInputNoWrap_(); + + if (selection == 0) + { + gSpecialVar_0x8004 = selection; + sLearnMoveStruct->state = 14; + } + else if (selection == -1 || selection == 1) + { + if (gUnknown_0203BC38.showContestInfo == FALSE) + { + sLearnMoveStruct->state = 3; + } + else if (gUnknown_0203BC38.showContestInfo == TRUE) + { + sLearnMoveStruct->state = 5; + } + } + } + break; + case 16: + sub_816084C(gText_PkmnTryingToLearnMove); + sLearnMoveStruct->state++; + break; + case 17: + if (!sub_81D2C3C()) + { + sub_81D2C50(); + sLearnMoveStruct->state = 18; + } + break; + case 18: + { + s8 var = Menu_ProcessInputNoWrap_(); + + if (var == 0) + { + sub_816084C(gText_WhichMoveToForget2); + sLearnMoveStruct->state = 19; + } + else if (var == -1 || var == 1) + { + sLearnMoveStruct->state = 24; + } + } + break; + case 24: + StringCopy(gStringVar2, gMoveNames[sub_8161054()]); + sub_816084C(gText_StopTryingToTeachMove); + sLearnMoveStruct->state++; + break; + case 25: + if (!sub_81D2C3C()) + { + sub_81D2C50(); + sLearnMoveStruct->state++; + } + break; + case 26: + { + s8 var = Menu_ProcessInputNoWrap_(); + + if (var == 0) + { + sLearnMoveStruct->state = 27; + } + else if (var == -1 || var == 1) + { + // What's the point? It gets set to 16, anyway. + if (gUnknown_0203BC38.showContestInfo == FALSE) + { + sLearnMoveStruct->state = 3; + } + else if (gUnknown_0203BC38.showContestInfo == TRUE) + { + sLearnMoveStruct->state = 5; + } + sLearnMoveStruct->state = 16; + } + } + break; + case 27: + if (!sub_81D2C3C()) + { + FillWindowPixelBuffer(3, 0x11); + if (gUnknown_0203BC38.showContestInfo == FALSE) + { + sLearnMoveStruct->state = 3; + } + else if (gUnknown_0203BC38.showContestInfo == TRUE) + { + sLearnMoveStruct->state = 5; + } + } + break; + case 19: + if (!sub_81D2C3C()) + { + sLearnMoveStruct->state = 20; + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); + } + break; + case 20: + if (!gPaletteFade.active) + { + ShowSelectMovePokemonSummaryScreen(gPlayerParty, sLearnMoveStruct->partyMon, gPlayerPartyCount - 1, sub_8160740, sub_8161054()); + sub_8160EA0(); + } + break; + case 21: + if (!sub_81D2C3C()) + { + sLearnMoveStruct->state = 14; + } + break; + case 22: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK); + break; + case 14: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); + sLearnMoveStruct->state++; + break; + case 15: + if (!gPaletteFade.active) + { + sub_8160EA0(); + SetMainCallback2(CB2_ReturnToField); + } + break; + case 28: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK); + sLearnMoveStruct->state++; + if (gUnknown_0203BC38.showContestInfo == FALSE) + { + render_previous_quest_text(TRUE); + } + else if (gUnknown_0203BC38.showContestInfo == TRUE) + { + sub_8161074(1); + } + sub_8161234(); + CopyWindowToVram(3, 2); + break; + case 29: + if (!gPaletteFade.active) + { + if (sLearnMoveStruct->unk045 == 4) + { + sLearnMoveStruct->state = 24; + } + else + { + u16 moveId = GetMonData(&gPlayerParty[sLearnMoveStruct->partyMon], MON_DATA_MOVE1 + sLearnMoveStruct->unk045); + + StringCopy(gStringVar3, gMoveNames[moveId]); + RemoveMonPPBonus(&gPlayerParty[sLearnMoveStruct->partyMon], sLearnMoveStruct->unk045); + SetMonMoveSlot(&gPlayerParty[sLearnMoveStruct->partyMon], sub_8161054(), sLearnMoveStruct->unk045); + StringCopy(gStringVar2, gMoveNames[sub_8161054()]); + sub_816084C(gText_12AndPoof); + sLearnMoveStruct->state = 30; + gSpecialVar_0x8004 = 1; + } + } + break; + case 30: + if (!sub_81D2C3C()) + { + sub_816084C(gText_PkmnForgotMoveAndLearnedNew); + sLearnMoveStruct->state = 31; + PlayFanfare(MUS_FANFA1); + } + break; + case 31: + if (!sub_81D2C3C()) + { + PlayFanfare(MUS_FANFA1); + sLearnMoveStruct->state = 32; + } + break; + case 32: + if (IsFanfareTaskInactive()) + { + sLearnMoveStruct->state = 33; + } + break; + case 33: + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + sLearnMoveStruct->state = 14; + } + break; + } +} + +void sub_8160EA0(void) +{ + sub_8161234(); + DestroyListMenuTask(sLearnMoveStruct->listMenuTask, &gUnknown_0203BC38.listOffset, &gUnknown_0203BC38.listRow); + FreeAllWindowBuffers(); + FREE_AND_SET_NULL(sLearnMoveStruct); + ResetSpriteData(); + FreeAllSpritePalettes(); +} + +void render_previous_quest_text(bool8 a) +{ + s32 i; + + for (i = 0; i < 16; i++) + { + gSprites[sLearnMoveStruct->spriteIds[i]].invisible = TRUE; + } + + if (!a) + { + StringExpandPlaceholders(gStringVar4, gText_TeachWhichMoveToPkmn); + FillWindowPixelBuffer(3, 0x11); + PrintTextOnWindow(3, 1, gStringVar4, 0, 1, 0, NULL); + } +} + +void sub_816137C(s32); + +void sub_8160F50(u8 a0) +{ + s32 itemId = ListMenuHandleInputGetItemId(sLearnMoveStruct->listMenuTask); + ListMenuGetScrollAndRow(sLearnMoveStruct->listMenuTask, &gUnknown_0203BC38.listOffset, &gUnknown_0203BC38.listRow); + + switch (itemId) + { + case LIST_NOTHING_CHOSEN: + if (!(gMain.newKeys & (DPAD_LEFT | DPAD_RIGHT)) && !GetLRKeysState()) + { + break; + } + + PlaySE(SE_SELECT); + + if (a0 == 0) + { + PutWindowTilemap(1); + sLearnMoveStruct->state = 5; + gUnknown_0203BC38.showContestInfo = TRUE; + } + else + { + PutWindowTilemap(0); + sLearnMoveStruct->state = 3; + gUnknown_0203BC38.showContestInfo = FALSE; + } + + schedule_bg_copy_tilemap_to_vram(1); + sub_816137C(sub_8161054()); + break; + case LIST_B_PRESSED: + PlaySE(SE_SELECT); + sub_8161234(); + sLearnMoveStruct->state = 12; + StringExpandPlaceholders(gStringVar4, gText_GiveUpTeachingNewMove); + sub_81D2BF4(gStringVar4); + break; + default: + PlaySE(SE_SELECT); + sub_8161234(); + sLearnMoveStruct->state = 8; + StringCopy(gStringVar2, gMoveNames[itemId]); + StringExpandPlaceholders(gStringVar4, gText_TeachX); + sub_81D2BF4(gStringVar4); + break; + } +} + +s32 sub_8161054(void) +{ + return sLearnMoveStruct->menuItems[gUnknown_0203BC38.listRow + gUnknown_0203BC38.listOffset].id; +} + +void sub_8161074(u8 a0) +{ + if (!a0) + { + StringExpandPlaceholders(gStringVar4, gText_TeachWhichMoveToPkmn); + FillWindowPixelBuffer(3, 0x11); + PrintTextOnWindow(3, 1, gStringVar4, 0, 1, 0, NULL); + } +} + +void sub_81610B8(void) +{ + int i; + + sLearnMoveStruct->unk114 = 0xFF; + sLearnMoveStruct->unk113 = -1; + sub_81611AC(); + + for (i = 0; i < 8; i++) + { + sLearnMoveStruct->spriteIds[i] = CreateSprite(&gUnknown_085CEC10, (i - (i / 4) * 4) * 8 + 104, (i / 4) * 8 + 36, 0); + } + + for (i = 0; i < 8; i++) + { + sLearnMoveStruct->spriteIds[i + 8] = CreateSprite(&gUnknown_085CEC10, (i - (i / 4) * 4) * 8 + 104, (i / 4) * 8 + 52, 0); + StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIds[i + 8]], 2); + } + + for (i = 0; i < 16; i++) + { + gSprites[sLearnMoveStruct->spriteIds[i]].invisible = TRUE; + } +} + +void sub_81611AC(void) +{ + if (sLearnMoveStruct->unk114 == 0xFF) + { + sLearnMoveStruct->unk114 = AddScrollIndicatorArrowPair(&gUnknown_085CEBC0, &sLearnMoveStruct->unk116); + } + + if (sLearnMoveStruct->unk113 == 0xFF) + { + gTempScrollArrowTemplate = gUnknown_085CEBD0; + gTempScrollArrowTemplate.fullyDownThreshold = sLearnMoveStruct->numMenuChoices - sLearnMoveStruct->unk111; + sLearnMoveStruct->unk113 = AddScrollIndicatorArrowPair(&gTempScrollArrowTemplate, &gUnknown_0203BC38.listOffset); + } +} + +void sub_8161234(void) +{ + if (sLearnMoveStruct->unk114 != 0xFF) + { + RemoveScrollIndicatorArrowPair(sLearnMoveStruct->unk114); + sLearnMoveStruct->unk114 = 0xFF; + } + + if (sLearnMoveStruct->unk113 != 0xFF) + { + RemoveScrollIndicatorArrowPair(sLearnMoveStruct->unk113); + sLearnMoveStruct->unk113 = 0xFF; + } +} + +void sub_8161280(void) +{ + s32 i; + u8 nickname[POKEMON_NAME_LENGTH + 1]; + + sLearnMoveStruct->numMenuChoices = GetMoveRelearnerMoves(&gPlayerParty[sLearnMoveStruct->partyMon], sLearnMoveStruct->movesToLearn); + + for (i = 0; i < sLearnMoveStruct->numMenuChoices; i++) + { + sLearnMoveStruct->menuItems[i].name = gMoveNames[sLearnMoveStruct->movesToLearn[i]]; + sLearnMoveStruct->menuItems[i].id = sLearnMoveStruct->movesToLearn[i]; + } + + GetMonData(&gPlayerParty[sLearnMoveStruct->partyMon], MON_DATA_NICKNAME, nickname); + StringCopy10(gStringVar1, nickname); + sLearnMoveStruct->menuItems[sLearnMoveStruct->numMenuChoices].name = gText_Cancel; + sLearnMoveStruct->menuItems[sLearnMoveStruct->numMenuChoices].id = LIST_B_PRESSED; + sLearnMoveStruct->numMenuChoices++; + sLearnMoveStruct->unk111 = sub_81D28C8(sLearnMoveStruct->menuItems, sLearnMoveStruct->numMenuChoices); +} + +void sub_816137C(s32 item) +{ + u16 i; + + if (!gUnknown_0203BC38.showContestInfo || item == LIST_NOTHING_CHOSEN) + { + for (i = 0; i < 16; i++) + { + gSprites[sLearnMoveStruct->spriteIds[i]].invisible = TRUE; + } + } + else + { + u8 temp1 = gContestEffects[gContestMoves[item].effect].appeal / 10; + + if (temp1 == 0xFF) + { + temp1 = 0; + } + + for (i = 0; i < 8; i++) + { + if (i < temp1) + { + StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIds[i]], 1); + } + else + { + StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIds[i]], 0); + } + gSprites[sLearnMoveStruct->spriteIds[i]].invisible = FALSE; + } + + temp1 = gContestEffects[gContestMoves[item].effect].jam / 10; + + if (temp1 == 0xFF) + { + temp1 = 0; + } + + for (i = 0; i < 8; i++) + { + if (i < temp1) + { + StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIds[i]], 3); + } + else + { + StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIds[i]], 2); + } + gSprites[sLearnMoveStruct->spriteIds[i]].invisible = FALSE; + } + } } diff --git a/src/main_menu.c b/src/main_menu.c index 3afe1abe5..052035e34 100644 --- a/src/main_menu.c +++ b/src/main_menu.c @@ -1362,7 +1362,7 @@ void task_new_game_prof_birch_speech_part2_3(u8 taskId) void task_new_game_prof_birch_speech_part2_4(u8 taskId) { - switch (ProcessMenuInputNoWrap_()) + switch (Menu_ProcessInputNoWrap_()) { case 0: PlaySE(SE_SELECT); @@ -1802,7 +1802,7 @@ void sub_8031D74(void) s8 sub_8031DB4(void) { - return ProcessMenuInputNoWrapAround(); + return Menu_ProcessInputNoWrapAround(); } void set_default_player_name(u8 nameId) diff --git a/src/menu.c b/src/menu.c index f4ffec023..eda9513ba 100644 --- a/src/menu.c +++ b/src/menu.c @@ -986,7 +986,7 @@ s8 ProcessMenuInput(void) return MENU_NOTHING_CHOSEN; } -s8 ProcessMenuInputNoWrapAround(void) +s8 Menu_ProcessInputNoWrapAround(void) { u8 oldPos = gUnknown_0203CD90.cursorPos; @@ -1044,7 +1044,7 @@ s8 ProcessMenuInput_other(void) return MENU_NOTHING_CHOSEN; } -s8 ProcessMenuInputNoWrapAround_other(void) +s8 Menu_ProcessInputNoWrapAround_other(void) { u8 oldPos = gUnknown_0203CD90.cursorPos; @@ -1187,9 +1187,9 @@ void sub_8198C34(const struct WindowTemplate *window, u8 fontId, u16 baseTileNum sub_8198AF8(window, fontId, 0, 1, baseTileNum, paletteNum, 0); } -s8 ProcessMenuInputNoWrap_(void) +s8 Menu_ProcessInputNoWrap_(void) { - s8 result = ProcessMenuInputNoWrapAround(); + s8 result = Menu_ProcessInputNoWrapAround(); if (result != MENU_NOTHING_CHOSEN) sub_8198C78(); return result; diff --git a/src/menu_helpers.c b/src/menu_helpers.c index 178fbb5fa..217fdabae 100644 --- a/src/menu_helpers.c +++ b/src/menu_helpers.c @@ -169,7 +169,7 @@ void CreateYesNoMenuWithCallbacks(u8 taskId, const struct WindowTemplate *templa static void Task_CallYesOrNoCallback(u8 taskId) { - switch (ProcessMenuInputNoWrap_()) + switch (Menu_ProcessInputNoWrap_()) { case 0: PlaySE(SE_SELECT); diff --git a/src/player_pc.c b/src/player_pc.c index ba18b45ab..ef00e2e06 100644 --- a/src/player_pc.c +++ b/src/player_pc.c @@ -272,7 +272,7 @@ static void PlayerPCProcessMenuInput(u8 taskId) if(gPcItemMenuOptionsNum > 3) inputOptionId = ProcessMenuInput(); else - inputOptionId = ProcessMenuInputNoWrapAround(); + inputOptionId = Menu_ProcessInputNoWrapAround(); switch(inputOptionId) { @@ -686,7 +686,7 @@ static void Mailbox_DrawYesNoBeforeMove(u8 taskId) static void Mailbox_MoveToBagYesNoPrompt(u8 taskId) { - switch(ProcessMenuInputNoWrap_()) + switch(Menu_ProcessInputNoWrap_()) { case 0: Mailbox_DoMailMoveToBag(taskId); diff --git a/src/pokeblock.c b/src/pokeblock.c index 7dd20b237..e615693b9 100644 --- a/src/pokeblock.c +++ b/src/pokeblock.c @@ -1042,7 +1042,7 @@ static void Task_HandlePokeblockOptionsInput(u8 taskId) if (sub_81221EC() == TRUE) return; - itemId = ProcessMenuInputNoWrapAround(); + itemId = Menu_ProcessInputNoWrapAround(); if (itemId == MENU_NOTHING_CHOSEN) { return; diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index 728b887f8..55600b3c4 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -384,7 +384,7 @@ void sub_81BF8EC(u8 a, void *b, u8 c, u8 d, void *e) SetMainCallback2(sub_81BFAE4); } -void sub_81BFA38(void *a, u8 b, u8 c, void *d, u16 e) +void ShowSelectMovePokemonSummaryScreen(void *a, u8 b, u8 c, void *d, u16 e) { sub_81BF8EC(3, a, b, c, d); gUnknown_0203CF1C->unk40C4 = e; diff --git a/src/secret_base.c b/src/secret_base.c index c71f7ed23..b75163200 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -997,7 +997,7 @@ void sub_80E9FB0(u8 taskId) { s8 input; - input = ProcessMenuInputNoWrapAround(); + input = Menu_ProcessInputNoWrapAround(); switch (input) { case -1: diff --git a/src/start_menu.c b/src/start_menu.c index 7591d3b57..60271317a 100644 --- a/src/start_menu.c +++ b/src/start_menu.c @@ -985,7 +985,7 @@ static u8 SaveYesNoCallback(void) static u8 SaveConfirmInputCallback(void) { - switch (ProcessMenuInputNoWrap_()) + switch (Menu_ProcessInputNoWrap_()) { case 0: // Yes switch (gSaveFileStatus) @@ -1045,7 +1045,7 @@ static u8 SaveConfirmOverwriteCallback(void) static u8 SaveOverwriteInputCallback(void) { - switch (ProcessMenuInputNoWrap_()) + switch (Menu_ProcessInputNoWrap_()) { case 0: // Yes sSaveDialogCallback = SaveSavingMessageCallback; @@ -1169,7 +1169,7 @@ static u8 BattlePyramidRetireYesNoCallback(void) static u8 BattlePyramidRetireInputCallback(void) { - switch (ProcessMenuInputNoWrap_()) + switch (Menu_ProcessInputNoWrap_()) { case 0: // Yes return SAVE_CANCELED; diff --git a/src/starter_choose.c b/src/starter_choose.c index b55b0fbc5..36e2b121a 100644 --- a/src/starter_choose.c +++ b/src/starter_choose.c @@ -258,7 +258,7 @@ static void Task_StarterChoose5(u8 taskId) { u8 spriteId; - switch (ProcessMenuInputNoWrap_()) + switch (Menu_ProcessInputNoWrap_()) { case 0: // YES // Return the starter choice and exit. diff --git a/src/wallclock.c b/src/wallclock.c index 3d95d75ac..5be20d5c9 100644 --- a/src/wallclock.c +++ b/src/wallclock.c @@ -763,7 +763,7 @@ static void Task_SetClock3(u8 taskId) static void Task_SetClock4(u8 taskId) { - switch (ProcessMenuInputNoWrap_()) + switch (Menu_ProcessInputNoWrap_()) { case 0: PlaySE(SE_SELECT); -- cgit v1.2.3 From b40957c09b0fdebae2923b9080e1a08d92ad0812 Mon Sep 17 00:00:00 2001 From: Diegoisawesome Date: Sun, 12 Aug 2018 13:33:41 -0700 Subject: Finish decompiling learn_move --- src/event_data.c | 8 +-- src/learn_move.c | 190 +++++++++++++++++++++++++---------------------------- src/slot_machine.c | 2 +- 3 files changed, 96 insertions(+), 104 deletions(-) (limited to 'src') diff --git a/src/event_data.c b/src/event_data.c index 2cbe50f13..8a998fe26 100644 --- a/src/event_data.c +++ b/src/event_data.c @@ -168,8 +168,8 @@ u16 *GetVarPointer(u16 id) return NULL; else if (id < SPECIAL_VARS_START) return &gSaveBlock1Ptr->vars[id - VARS_START]; - else - return gSpecialVars[id - SPECIAL_VARS_START]; + else + return gSpecialVars[id - SPECIAL_VARS_START]; } u16 VarGet(u16 id) @@ -200,8 +200,8 @@ u8 *GetFlagPointer(u16 id) return NULL; else if (id < SPECIAL_FLAGS_START) return &gSaveBlock1Ptr->flags[id / 8]; - else - return &gUnknown_020375FC[(id - SPECIAL_FLAGS_START) / 8]; + else + return &gUnknown_020375FC[(id - SPECIAL_FLAGS_START) / 8]; } u8 FlagSet(u16 id) diff --git a/src/learn_move.c b/src/learn_move.c index b65fd2045..9058a3287 100644 --- a/src/learn_move.c +++ b/src/learn_move.c @@ -1,6 +1,7 @@ #include "global.h" #include "main.h" #include "bg.h" +#include "contest_effect.h" #include "data2.h" #include "event_data.h" #include "field_screen.h" @@ -23,34 +24,31 @@ #include "constants/rgb.h" #include "constants/songs.h" -struct LearnMoveStruct +static EWRAM_DATA struct { u8 state; - u8 spriteIds[16]; /*0x001*/ - u8 filler11; /*0x011*/ - u16 movesToLearn[4]; /*0x012*/ - u8 filler1A[0x44 - 0x1A]; /*0x01A*/ - u8 partyMon; /*0x044*/ - u8 unk045; /*0x045*/ - u8 filler46[2]; /*0x046*/ - struct ListMenuItem menuItems[4]; /*0x048*/ - u8 filler68[0x110 - 0x68]; /*0x068*/ - u8 numMenuChoices; /*0x110*/ - u8 unk111; /*0x111*/ - u8 listMenuTask; /*0x112*/ - u8 unk113; /*0x113*/ - u8 unk114; /*0x114*/ - u16 unk116; /*0x116*/ -}; - -EWRAM_DATA struct LearnMoveStruct *sLearnMoveStruct = {0}; -EWRAM_DATA struct { + u8 spriteIds[16]; /*0x001*/ + u8 filler11; /*0x011*/ + u16 movesToLearn[4]; /*0x012*/ + u8 filler1A[0x44 - 0x1A]; /*0x01A*/ + u8 partyMon; /*0x044*/ + u8 unk045; /*0x045*/ + u8 filler46[2]; /*0x046*/ + struct ListMenuItem menuItems[4]; /*0x048*/ + u8 filler68[0x110 - 0x68]; /*0x068*/ + u8 numMenuChoices; /*0x110*/ + u8 unk111; /*0x111*/ + u8 listMenuTask; /*0x112*/ + u8 unk113; /*0x113*/ + u8 unk114; /*0x114*/ + u16 unk116; /*0x116*/ +} *sLearnMoveStruct = {0}; + +static EWRAM_DATA struct { u16 listOffset; u16 listRow; u8 showContestInfo; -} gUnknown_0203BC38 = {0}; - -extern void (*gFieldCallback)(void); +} sLearnMoveStruct2 = {0}; const u16 gUnknown_085CE9F8[] = INCBIN_U16("graphics/interface/ui_learn_move.gbapal"); const u8 gUnknown_085CEA18[] = INCBIN_U8("graphics/interface/ui_learn_move.4bpp"); @@ -214,20 +212,23 @@ const struct BgTemplate gUnknown_085CEC28[] = }, }; -extern void sub_81D2824(u16); - -void sub_8160868(void); -void sub_8161280(void); -void sub_81610B8(void); -void sub_816082C(void); - +static void sub_8160868(void); +static void sub_8161280(void); +static void sub_81610B8(void); +static void sub_816082C(void); static void sub_8160664(u8 taskId); -void CB2_InitLearnMove(void); -void sub_8160740(void); -void sub_81607EC(void); -void sub_816082C(void); - -void VBlankCB_LearnMove(void) +static void CB2_InitLearnMove(void); +static void sub_8160740(void); +static void sub_81607EC(void); +static void sub_81611AC(void); +static void sub_8160F50(u8); +static void sub_8161074(u8); +static s32 sub_8161054(void); +static void sub_8160EA0(void); +static void sub_8161234(void); +static void render_previous_quest_text(bool8); + +static void VBlankCB_LearnMove(void) { LoadOam(); ProcessSpriteCopyRequests(); @@ -241,7 +242,7 @@ void TeachMoveTutorMove(void) BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0); } -void sub_8160664(u8 taskId) +static void sub_8160664(u8 taskId) { if (!gPaletteFade.active) { @@ -251,22 +252,22 @@ void sub_8160664(u8 taskId) } } -void CB2_InitLearnMove(void) +static void CB2_InitLearnMove(void) { ResetSpriteData(); FreeAllSpritePalettes(); ResetTasks(); clear_scheduled_bg_copies_to_vram(); - sLearnMoveStruct = AllocZeroed(sizeof(struct LearnMoveStruct)); + sLearnMoveStruct = AllocZeroed(sizeof(*sLearnMoveStruct)); sLearnMoveStruct->partyMon = gSpecialVar_0x8004; SetVBlankCallback(VBlankCB_LearnMove); sub_81607EC(); sub_81D2824(0); - gUnknown_0203BC38.listOffset = 0; - gUnknown_0203BC38.listRow = 0; - gUnknown_0203BC38.showContestInfo = 0; + sLearnMoveStruct2.listOffset = 0; + sLearnMoveStruct2.listRow = 0; + sLearnMoveStruct2.showContestInfo = 0; sub_8161280(); @@ -274,37 +275,37 @@ void CB2_InitLearnMove(void) LoadSpritePalette(&gUnknown_085CEBB8); sub_81610B8(); - sLearnMoveStruct->listMenuTask = ListMenuInit(&gMultiuseListMenuTemplate, gUnknown_0203BC38.listOffset, gUnknown_0203BC38.listRow); + sLearnMoveStruct->listMenuTask = ListMenuInit(&gMultiuseListMenuTemplate, sLearnMoveStruct2.listOffset, sLearnMoveStruct2.listRow); FillPalette(RGB_BLACK, 0, 2); SetMainCallback2(sub_816082C); } -void sub_8160740(void) +static void sub_8160740(void) { ResetSpriteData(); FreeAllSpritePalettes(); ResetTasks(); clear_scheduled_bg_copies_to_vram(); - sLearnMoveStruct = AllocZeroed(sizeof(struct LearnMoveStruct)); + sLearnMoveStruct = AllocZeroed(sizeof(*sLearnMoveStruct)); sLearnMoveStruct->state = 28; sLearnMoveStruct->partyMon = gSpecialVar_0x8004; sLearnMoveStruct->unk045 = gSpecialVar_0x8005; SetVBlankCallback(VBlankCB_LearnMove); sub_81607EC(); - sub_81D2824(gUnknown_0203BC38.showContestInfo); + sub_81D2824(sLearnMoveStruct2.showContestInfo); sub_8161280(); LoadSpriteSheet(&gUnknown_085CEBB0); LoadSpritePalette(&gUnknown_085CEBB8); sub_81610B8(); - sLearnMoveStruct->listMenuTask = ListMenuInit(&gMultiuseListMenuTemplate, gUnknown_0203BC38.listOffset, gUnknown_0203BC38.listRow); + sLearnMoveStruct->listMenuTask = ListMenuInit(&gMultiuseListMenuTemplate, sLearnMoveStruct2.listOffset, sLearnMoveStruct2.listRow); FillPalette(RGB_BLACK, 0, 2); SetMainCallback2(sub_816082C); } -void sub_81607EC(void) +static void sub_81607EC(void) { ResetVramOamAndBgCntRegs(); ResetBgsAndClearDma3BusyFlags(0); @@ -318,7 +319,7 @@ void sub_81607EC(void) SetGpuReg(REG_OFFSET_BLDCNT, 0); } -void sub_816082C(void) +static void sub_816082C(void) { sub_8160868(); RunTasks(); @@ -328,21 +329,13 @@ void sub_816082C(void) UpdatePaletteFade(); } -void sub_816084C(const u8 *src) +static void sub_816084C(const u8 *src) { StringExpandPlaceholders(gStringVar4, src); sub_81D2BF4(gStringVar4); } -void sub_81611AC(void); -void sub_8160F50(u8); -void sub_8161074(u8); -s32 sub_8161054(void); -void sub_8160EA0(void); -void sub_8161234(void); -void render_previous_quest_text(bool8); - -void sub_8160868(void) +static void sub_8160868(void) { switch (sLearnMoveStruct->state) { @@ -402,11 +395,11 @@ void sub_8160868(void) } else if (selection == -1 || selection == 1) { - if (gUnknown_0203BC38.showContestInfo == FALSE) + if (sLearnMoveStruct2.showContestInfo == FALSE) { sLearnMoveStruct->state = 3; } - else if (gUnknown_0203BC38.showContestInfo == TRUE) + else if (sLearnMoveStruct2.showContestInfo == TRUE) { sLearnMoveStruct->state = 5; } @@ -431,11 +424,11 @@ void sub_8160868(void) } else if (selection == -1 || selection == 1) { - if (gUnknown_0203BC38.showContestInfo == FALSE) + if (sLearnMoveStruct2.showContestInfo == FALSE) { sLearnMoveStruct->state = 3; } - else if (gUnknown_0203BC38.showContestInfo == TRUE) + else if (sLearnMoveStruct2.showContestInfo == TRUE) { sLearnMoveStruct->state = 5; } @@ -491,11 +484,11 @@ void sub_8160868(void) else if (var == -1 || var == 1) { // What's the point? It gets set to 16, anyway. - if (gUnknown_0203BC38.showContestInfo == FALSE) + if (sLearnMoveStruct2.showContestInfo == FALSE) { sLearnMoveStruct->state = 3; } - else if (gUnknown_0203BC38.showContestInfo == TRUE) + else if (sLearnMoveStruct2.showContestInfo == TRUE) { sLearnMoveStruct->state = 5; } @@ -507,11 +500,11 @@ void sub_8160868(void) if (!sub_81D2C3C()) { FillWindowPixelBuffer(3, 0x11); - if (gUnknown_0203BC38.showContestInfo == FALSE) + if (sLearnMoveStruct2.showContestInfo == FALSE) { sLearnMoveStruct->state = 3; } - else if (gUnknown_0203BC38.showContestInfo == TRUE) + else if (sLearnMoveStruct2.showContestInfo == TRUE) { sLearnMoveStruct->state = 5; } @@ -554,11 +547,11 @@ void sub_8160868(void) case 28: BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK); sLearnMoveStruct->state++; - if (gUnknown_0203BC38.showContestInfo == FALSE) + if (sLearnMoveStruct2.showContestInfo == FALSE) { render_previous_quest_text(TRUE); } - else if (gUnknown_0203BC38.showContestInfo == TRUE) + else if (sLearnMoveStruct2.showContestInfo == TRUE) { sub_8161074(1); } @@ -617,17 +610,17 @@ void sub_8160868(void) } } -void sub_8160EA0(void) +static void sub_8160EA0(void) { sub_8161234(); - DestroyListMenuTask(sLearnMoveStruct->listMenuTask, &gUnknown_0203BC38.listOffset, &gUnknown_0203BC38.listRow); + DestroyListMenuTask(sLearnMoveStruct->listMenuTask, &sLearnMoveStruct2.listOffset, &sLearnMoveStruct2.listRow); FreeAllWindowBuffers(); FREE_AND_SET_NULL(sLearnMoveStruct); ResetSpriteData(); FreeAllSpritePalettes(); } -void render_previous_quest_text(bool8 a) +static void render_previous_quest_text(bool8 a) { s32 i; @@ -644,12 +637,10 @@ void render_previous_quest_text(bool8 a) } } -void sub_816137C(s32); - -void sub_8160F50(u8 a0) +static void sub_8160F50(u8 a0) { s32 itemId = ListMenuHandleInputGetItemId(sLearnMoveStruct->listMenuTask); - ListMenuGetScrollAndRow(sLearnMoveStruct->listMenuTask, &gUnknown_0203BC38.listOffset, &gUnknown_0203BC38.listRow); + ListMenuGetScrollAndRow(sLearnMoveStruct->listMenuTask, &sLearnMoveStruct2.listOffset, &sLearnMoveStruct2.listRow); switch (itemId) { @@ -665,13 +656,13 @@ void sub_8160F50(u8 a0) { PutWindowTilemap(1); sLearnMoveStruct->state = 5; - gUnknown_0203BC38.showContestInfo = TRUE; + sLearnMoveStruct2.showContestInfo = TRUE; } else { PutWindowTilemap(0); sLearnMoveStruct->state = 3; - gUnknown_0203BC38.showContestInfo = FALSE; + sLearnMoveStruct2.showContestInfo = FALSE; } schedule_bg_copy_tilemap_to_vram(1); @@ -695,12 +686,12 @@ void sub_8160F50(u8 a0) } } -s32 sub_8161054(void) +static s32 sub_8161054(void) { - return sLearnMoveStruct->menuItems[gUnknown_0203BC38.listRow + gUnknown_0203BC38.listOffset].id; + return sLearnMoveStruct->menuItems[sLearnMoveStruct2.listRow + sLearnMoveStruct2.listOffset].id; } -void sub_8161074(u8 a0) +static void sub_8161074(u8 a0) { if (!a0) { @@ -710,11 +701,11 @@ void sub_8161074(u8 a0) } } -void sub_81610B8(void) +static void sub_81610B8(void) { int i; - sLearnMoveStruct->unk114 = 0xFF; + sLearnMoveStruct->unk114 = -1; sLearnMoveStruct->unk113 = -1; sub_81611AC(); @@ -735,7 +726,7 @@ void sub_81610B8(void) } } -void sub_81611AC(void) +static void sub_81611AC(void) { if (sLearnMoveStruct->unk114 == 0xFF) { @@ -746,11 +737,11 @@ void sub_81611AC(void) { gTempScrollArrowTemplate = gUnknown_085CEBD0; gTempScrollArrowTemplate.fullyDownThreshold = sLearnMoveStruct->numMenuChoices - sLearnMoveStruct->unk111; - sLearnMoveStruct->unk113 = AddScrollIndicatorArrowPair(&gTempScrollArrowTemplate, &gUnknown_0203BC38.listOffset); + sLearnMoveStruct->unk113 = AddScrollIndicatorArrowPair(&gTempScrollArrowTemplate, &sLearnMoveStruct2.listOffset); } } -void sub_8161234(void) +static void sub_8161234(void) { if (sLearnMoveStruct->unk114 != 0xFF) { @@ -765,7 +756,7 @@ void sub_8161234(void) } } -void sub_8161280(void) +static void sub_8161280(void) { s32 i; u8 nickname[POKEMON_NAME_LENGTH + 1]; @@ -788,9 +779,10 @@ void sub_8161280(void) void sub_816137C(s32 item) { + u16 numHearts; u16 i; - if (!gUnknown_0203BC38.showContestInfo || item == LIST_NOTHING_CHOSEN) + if (!sLearnMoveStruct2.showContestInfo || item == LIST_B_PRESSED) { for (i = 0; i < 16; i++) { @@ -799,16 +791,16 @@ void sub_816137C(s32 item) } else { - u8 temp1 = gContestEffects[gContestMoves[item].effect].appeal / 10; + numHearts = (u8)(gContestEffects[gContestMoves[item].effect].appeal / 10); - if (temp1 == 0xFF) + if (numHearts == 0xFF) { - temp1 = 0; + numHearts = 0; } for (i = 0; i < 8; i++) { - if (i < temp1) + if (i < numHearts) { StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIds[i]], 1); } @@ -819,24 +811,24 @@ void sub_816137C(s32 item) gSprites[sLearnMoveStruct->spriteIds[i]].invisible = FALSE; } - temp1 = gContestEffects[gContestMoves[item].effect].jam / 10; + numHearts = (u8)(gContestEffects[gContestMoves[item].effect].jam / 10); - if (temp1 == 0xFF) + if (numHearts == 0xFF) { - temp1 = 0; + numHearts = 0; } for (i = 0; i < 8; i++) { - if (i < temp1) + if (i < numHearts) { - StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIds[i]], 3); + StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIds[i + 8]], 3); } else { - StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIds[i]], 2); + StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIds[i + 8]], 2); } - gSprites[sLearnMoveStruct->spriteIds[i]].invisible = FALSE; + gSprites[sLearnMoveStruct->spriteIds[i + 8]].invisible = FALSE; } } } diff --git a/src/slot_machine.c b/src/slot_machine.c index 5422103c3..6b6a46cf8 100644 --- a/src/slot_machine.c +++ b/src/slot_machine.c @@ -975,7 +975,7 @@ bool8 sub_8102318(struct Task *task) bool8 sub_8102344(struct Task *task) { - s8 input = ProcessMenuInputNoWrap_(); + s8 input = Menu_ProcessInputNoWrap_(); if (input == 0) { sub_8197434(0, TRUE); -- cgit v1.2.3 From 6dac87abfd2bea0ddf126cdc1e9c31757c8fee36 Mon Sep 17 00:00:00 2001 From: Diegoisawesome Date: Sun, 12 Aug 2018 14:01:08 -0700 Subject: Cleanup and document learn_move --- src/learn_move.c | 181 +++++++++++++++++++++++++++---------------------------- 1 file changed, 90 insertions(+), 91 deletions(-) (limited to 'src') diff --git a/src/learn_move.c b/src/learn_move.c index 9058a3287..e288a393d 100644 --- a/src/learn_move.c +++ b/src/learn_move.c @@ -1,5 +1,6 @@ #include "global.h" #include "main.h" +#include "battle.h" #include "bg.h" #include "contest_effect.h" #include "data2.h" @@ -28,20 +29,18 @@ static EWRAM_DATA struct { u8 state; u8 spriteIds[16]; /*0x001*/ - u8 filler11; /*0x011*/ u16 movesToLearn[4]; /*0x012*/ u8 filler1A[0x44 - 0x1A]; /*0x01A*/ u8 partyMon; /*0x044*/ - u8 unk045; /*0x045*/ - u8 filler46[2]; /*0x046*/ - struct ListMenuItem menuItems[4]; /*0x048*/ - u8 filler68[0x110 - 0x68]; /*0x068*/ + u8 moveSlot; /*0x045*/ + struct ListMenuItem menuItems[20]; /*0x048*/ + u8 fillerE8[0x110 - 0xE8]; /*0x0E8*/ u8 numMenuChoices; /*0x110*/ - u8 unk111; /*0x111*/ + u8 numToShowAtOnce; /*0x111*/ u8 listMenuTask; /*0x112*/ - u8 unk113; /*0x113*/ - u8 unk114; /*0x114*/ - u16 unk116; /*0x116*/ + u8 scrollArrowTaskId1; /*0x113*/ + u8 scrollArrowTaskId2; /*0x114*/ + u16 scrollOffset; /*0x116*/ } *sLearnMoveStruct = {0}; static EWRAM_DATA struct { @@ -212,21 +211,21 @@ const struct BgTemplate gUnknown_085CEC28[] = }, }; -static void sub_8160868(void); -static void sub_8161280(void); -static void sub_81610B8(void); -static void sub_816082C(void); -static void sub_8160664(u8 taskId); +static void LearnMoveMain(void); +static void CreateMenuItemsList(void); +static void CreateHearts(void); +static void CB2_Main(void); +static void Task_WaitForFadeOut(u8 taskId); static void CB2_InitLearnMove(void); -static void sub_8160740(void); -static void sub_81607EC(void); -static void sub_81611AC(void); -static void sub_8160F50(u8); -static void sub_8161074(u8); -static s32 sub_8161054(void); -static void sub_8160EA0(void); -static void sub_8161234(void); -static void render_previous_quest_text(bool8); +static void CB2_InitLearnMoveReturnFromSelectMove(void); +static void InitBGs(void); +static void AddScrollArrows(void); +static void HandleInput(u8); +static void ShowTeachMoveText(u8); +static s32 GetCurrentItemId(void); +static void FreeListMenuResources(void); +static void RemoveScrollArrows(void); +static void HideSpritesAndPrintTeachText(bool8); static void VBlankCB_LearnMove(void) { @@ -238,11 +237,11 @@ static void VBlankCB_LearnMove(void) void TeachMoveTutorMove(void) { ScriptContext2_Enable(); - CreateTask(sub_8160664, 0xA); + CreateTask(Task_WaitForFadeOut, 0xA); BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0); } -static void sub_8160664(u8 taskId) +static void Task_WaitForFadeOut(u8 taskId) { if (!gPaletteFade.active) { @@ -262,25 +261,25 @@ static void CB2_InitLearnMove(void) sLearnMoveStruct->partyMon = gSpecialVar_0x8004; SetVBlankCallback(VBlankCB_LearnMove); - sub_81607EC(); + InitBGs(); sub_81D2824(0); sLearnMoveStruct2.listOffset = 0; sLearnMoveStruct2.listRow = 0; - sLearnMoveStruct2.showContestInfo = 0; + sLearnMoveStruct2.showContestInfo = FALSE; - sub_8161280(); + CreateMenuItemsList(); LoadSpriteSheet(&gUnknown_085CEBB0); LoadSpritePalette(&gUnknown_085CEBB8); - sub_81610B8(); + CreateHearts(); sLearnMoveStruct->listMenuTask = ListMenuInit(&gMultiuseListMenuTemplate, sLearnMoveStruct2.listOffset, sLearnMoveStruct2.listRow); FillPalette(RGB_BLACK, 0, 2); - SetMainCallback2(sub_816082C); + SetMainCallback2(CB2_Main); } -static void sub_8160740(void) +static void CB2_InitLearnMoveReturnFromSelectMove(void) { ResetSpriteData(); FreeAllSpritePalettes(); @@ -289,23 +288,23 @@ static void sub_8160740(void) sLearnMoveStruct = AllocZeroed(sizeof(*sLearnMoveStruct)); sLearnMoveStruct->state = 28; sLearnMoveStruct->partyMon = gSpecialVar_0x8004; - sLearnMoveStruct->unk045 = gSpecialVar_0x8005; + sLearnMoveStruct->moveSlot = gSpecialVar_0x8005; SetVBlankCallback(VBlankCB_LearnMove); - sub_81607EC(); + InitBGs(); sub_81D2824(sLearnMoveStruct2.showContestInfo); - sub_8161280(); + CreateMenuItemsList(); LoadSpriteSheet(&gUnknown_085CEBB0); LoadSpritePalette(&gUnknown_085CEBB8); - sub_81610B8(); + CreateHearts(); sLearnMoveStruct->listMenuTask = ListMenuInit(&gMultiuseListMenuTemplate, sLearnMoveStruct2.listOffset, sLearnMoveStruct2.listRow); FillPalette(RGB_BLACK, 0, 2); - SetMainCallback2(sub_816082C); + SetMainCallback2(CB2_Main); } -static void sub_81607EC(void) +static void InitBGs(void) { ResetVramOamAndBgCntRegs(); ResetBgsAndClearDma3BusyFlags(0); @@ -319,9 +318,9 @@ static void sub_81607EC(void) SetGpuReg(REG_OFFSET_BLDCNT, 0); } -static void sub_816082C(void) +static void CB2_Main(void) { - sub_8160868(); + LearnMoveMain(); RunTasks(); AnimateSprites(); BuildOamBuffer(); @@ -335,13 +334,13 @@ static void sub_816084C(const u8 *src) sub_81D2BF4(gStringVar4); } -static void sub_8160868(void) +static void LearnMoveMain(void) { switch (sLearnMoveStruct->state) { case 0: sLearnMoveStruct->state++; - render_previous_quest_text(FALSE); + HideSpritesAndPrintTeachText(FALSE); BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK); break; case 1: @@ -354,20 +353,20 @@ static void sub_8160868(void) sLearnMoveStruct->state++; break; case 3: - render_previous_quest_text(FALSE); + HideSpritesAndPrintTeachText(FALSE); sLearnMoveStruct->state++; - sub_81611AC(); + AddScrollArrows(); break; case 4: - sub_8160F50(0); + HandleInput(FALSE); return; case 5: - sub_8161074(0); + ShowTeachMoveText(FALSE); sLearnMoveStruct->state++; - sub_81611AC(); + AddScrollArrows(); break; case 6: - sub_8160F50(1); + HandleInput(TRUE); break; case 8: if (!sub_81D2C3C()) @@ -382,7 +381,7 @@ static void sub_8160868(void) if (selection == 0) { - if (GiveMoveToMon(&gPlayerParty[sLearnMoveStruct->partyMon], sub_8161054()) != 0xFFFF) + if (GiveMoveToMon(&gPlayerParty[sLearnMoveStruct->partyMon], GetCurrentItemId()) != 0xFFFF) { sub_816084C(gText_PkmnLearnedMove4); gSpecialVar_0x8004 = 1; @@ -462,7 +461,7 @@ static void sub_8160868(void) } break; case 24: - StringCopy(gStringVar2, gMoveNames[sub_8161054()]); + StringCopy(gStringVar2, gMoveNames[GetCurrentItemId()]); sub_816084C(gText_StopTryingToTeachMove); sLearnMoveStruct->state++; break; @@ -520,8 +519,8 @@ static void sub_8160868(void) case 20: if (!gPaletteFade.active) { - ShowSelectMovePokemonSummaryScreen(gPlayerParty, sLearnMoveStruct->partyMon, gPlayerPartyCount - 1, sub_8160740, sub_8161054()); - sub_8160EA0(); + ShowSelectMovePokemonSummaryScreen(gPlayerParty, sLearnMoveStruct->partyMon, gPlayerPartyCount - 1, CB2_InitLearnMoveReturnFromSelectMove, GetCurrentItemId()); + FreeListMenuResources(); } break; case 21: @@ -540,7 +539,7 @@ static void sub_8160868(void) case 15: if (!gPaletteFade.active) { - sub_8160EA0(); + FreeListMenuResources(); SetMainCallback2(CB2_ReturnToField); } break; @@ -549,30 +548,30 @@ static void sub_8160868(void) sLearnMoveStruct->state++; if (sLearnMoveStruct2.showContestInfo == FALSE) { - render_previous_quest_text(TRUE); + HideSpritesAndPrintTeachText(TRUE); } else if (sLearnMoveStruct2.showContestInfo == TRUE) { - sub_8161074(1); + ShowTeachMoveText(TRUE); } - sub_8161234(); + RemoveScrollArrows(); CopyWindowToVram(3, 2); break; case 29: if (!gPaletteFade.active) { - if (sLearnMoveStruct->unk045 == 4) + if (sLearnMoveStruct->moveSlot == MAX_MON_MOVES) { sLearnMoveStruct->state = 24; } else { - u16 moveId = GetMonData(&gPlayerParty[sLearnMoveStruct->partyMon], MON_DATA_MOVE1 + sLearnMoveStruct->unk045); + u16 moveId = GetMonData(&gPlayerParty[sLearnMoveStruct->partyMon], MON_DATA_MOVE1 + sLearnMoveStruct->moveSlot); StringCopy(gStringVar3, gMoveNames[moveId]); - RemoveMonPPBonus(&gPlayerParty[sLearnMoveStruct->partyMon], sLearnMoveStruct->unk045); - SetMonMoveSlot(&gPlayerParty[sLearnMoveStruct->partyMon], sub_8161054(), sLearnMoveStruct->unk045); - StringCopy(gStringVar2, gMoveNames[sub_8161054()]); + RemoveMonPPBonus(&gPlayerParty[sLearnMoveStruct->partyMon], sLearnMoveStruct->moveSlot); + SetMonMoveSlot(&gPlayerParty[sLearnMoveStruct->partyMon], GetCurrentItemId(), sLearnMoveStruct->moveSlot); + StringCopy(gStringVar2, gMoveNames[GetCurrentItemId()]); sub_816084C(gText_12AndPoof); sLearnMoveStruct->state = 30; gSpecialVar_0x8004 = 1; @@ -610,9 +609,9 @@ static void sub_8160868(void) } } -static void sub_8160EA0(void) +static void FreeListMenuResources(void) { - sub_8161234(); + RemoveScrollArrows(); DestroyListMenuTask(sLearnMoveStruct->listMenuTask, &sLearnMoveStruct2.listOffset, &sLearnMoveStruct2.listRow); FreeAllWindowBuffers(); FREE_AND_SET_NULL(sLearnMoveStruct); @@ -620,7 +619,7 @@ static void sub_8160EA0(void) FreeAllSpritePalettes(); } -static void render_previous_quest_text(bool8 a) +static void HideSpritesAndPrintTeachText(bool8 a) { s32 i; @@ -637,7 +636,7 @@ static void render_previous_quest_text(bool8 a) } } -static void sub_8160F50(u8 a0) +static void HandleInput(bool8 showContest) { s32 itemId = ListMenuHandleInputGetItemId(sLearnMoveStruct->listMenuTask); ListMenuGetScrollAndRow(sLearnMoveStruct->listMenuTask, &sLearnMoveStruct2.listOffset, &sLearnMoveStruct2.listRow); @@ -652,7 +651,7 @@ static void sub_8160F50(u8 a0) PlaySE(SE_SELECT); - if (a0 == 0) + if (showContest == FALSE) { PutWindowTilemap(1); sLearnMoveStruct->state = 5; @@ -666,18 +665,18 @@ static void sub_8160F50(u8 a0) } schedule_bg_copy_tilemap_to_vram(1); - sub_816137C(sub_8161054()); + ShowHideHearts(GetCurrentItemId()); break; case LIST_B_PRESSED: PlaySE(SE_SELECT); - sub_8161234(); + RemoveScrollArrows(); sLearnMoveStruct->state = 12; StringExpandPlaceholders(gStringVar4, gText_GiveUpTeachingNewMove); sub_81D2BF4(gStringVar4); break; default: PlaySE(SE_SELECT); - sub_8161234(); + RemoveScrollArrows(); sLearnMoveStruct->state = 8; StringCopy(gStringVar2, gMoveNames[itemId]); StringExpandPlaceholders(gStringVar4, gText_TeachX); @@ -686,14 +685,14 @@ static void sub_8160F50(u8 a0) } } -static s32 sub_8161054(void) +static s32 GetCurrentItemId(void) { return sLearnMoveStruct->menuItems[sLearnMoveStruct2.listRow + sLearnMoveStruct2.listOffset].id; } -static void sub_8161074(u8 a0) +static void ShowTeachMoveText(bool8 showContest) { - if (!a0) + if (showContest == FALSE) { StringExpandPlaceholders(gStringVar4, gText_TeachWhichMoveToPkmn); FillWindowPixelBuffer(3, 0x11); @@ -701,13 +700,13 @@ static void sub_8161074(u8 a0) } } -static void sub_81610B8(void) +static void CreateHearts(void) { int i; - sLearnMoveStruct->unk114 = -1; - sLearnMoveStruct->unk113 = -1; - sub_81611AC(); + sLearnMoveStruct->scrollArrowTaskId2 = -1; + sLearnMoveStruct->scrollArrowTaskId1 = -1; + AddScrollArrows(); for (i = 0; i < 8; i++) { @@ -726,37 +725,37 @@ static void sub_81610B8(void) } } -static void sub_81611AC(void) +static void AddScrollArrows(void) { - if (sLearnMoveStruct->unk114 == 0xFF) + if (sLearnMoveStruct->scrollArrowTaskId2 == 0xFF) { - sLearnMoveStruct->unk114 = AddScrollIndicatorArrowPair(&gUnknown_085CEBC0, &sLearnMoveStruct->unk116); + sLearnMoveStruct->scrollArrowTaskId2 = AddScrollIndicatorArrowPair(&gUnknown_085CEBC0, &sLearnMoveStruct->scrollOffset); } - if (sLearnMoveStruct->unk113 == 0xFF) + if (sLearnMoveStruct->scrollArrowTaskId1 == 0xFF) { gTempScrollArrowTemplate = gUnknown_085CEBD0; - gTempScrollArrowTemplate.fullyDownThreshold = sLearnMoveStruct->numMenuChoices - sLearnMoveStruct->unk111; - sLearnMoveStruct->unk113 = AddScrollIndicatorArrowPair(&gTempScrollArrowTemplate, &sLearnMoveStruct2.listOffset); + gTempScrollArrowTemplate.fullyDownThreshold = sLearnMoveStruct->numMenuChoices - sLearnMoveStruct->numToShowAtOnce; + sLearnMoveStruct->scrollArrowTaskId1 = AddScrollIndicatorArrowPair(&gTempScrollArrowTemplate, &sLearnMoveStruct2.listOffset); } } -static void sub_8161234(void) +static void RemoveScrollArrows(void) { - if (sLearnMoveStruct->unk114 != 0xFF) + if (sLearnMoveStruct->scrollArrowTaskId2 != 0xFF) { - RemoveScrollIndicatorArrowPair(sLearnMoveStruct->unk114); - sLearnMoveStruct->unk114 = 0xFF; + RemoveScrollIndicatorArrowPair(sLearnMoveStruct->scrollArrowTaskId2); + sLearnMoveStruct->scrollArrowTaskId2 = 0xFF; } - if (sLearnMoveStruct->unk113 != 0xFF) + if (sLearnMoveStruct->scrollArrowTaskId1 != 0xFF) { - RemoveScrollIndicatorArrowPair(sLearnMoveStruct->unk113); - sLearnMoveStruct->unk113 = 0xFF; + RemoveScrollIndicatorArrowPair(sLearnMoveStruct->scrollArrowTaskId1); + sLearnMoveStruct->scrollArrowTaskId1 = 0xFF; } } -static void sub_8161280(void) +static void CreateMenuItemsList(void) { s32 i; u8 nickname[POKEMON_NAME_LENGTH + 1]; @@ -774,10 +773,10 @@ static void sub_8161280(void) sLearnMoveStruct->menuItems[sLearnMoveStruct->numMenuChoices].name = gText_Cancel; sLearnMoveStruct->menuItems[sLearnMoveStruct->numMenuChoices].id = LIST_B_PRESSED; sLearnMoveStruct->numMenuChoices++; - sLearnMoveStruct->unk111 = sub_81D28C8(sLearnMoveStruct->menuItems, sLearnMoveStruct->numMenuChoices); + sLearnMoveStruct->numToShowAtOnce = sub_81D28C8(sLearnMoveStruct->menuItems, sLearnMoveStruct->numMenuChoices); } -void sub_816137C(s32 item) +void ShowHideHearts(s32 item) { u16 numHearts; u16 i; -- cgit v1.2.3 From a07d69d7c2e65ed8ea71ec88cc3c4cadbb444510 Mon Sep 17 00:00:00 2001 From: Diegoisawesome Date: Tue, 14 Aug 2018 21:56:11 -0700 Subject: Finish pokemon_summary_screen --- src/battle_pyramid.c | 248 ++++ src/data/text/nature_names.h | 54 + src/pokemon_summary_screen.c | 2336 +++++++++++++++++++--------------- src/unk_pokedex_area_screen_helper.c | 75 ++ 4 files changed, 1682 insertions(+), 1031 deletions(-) create mode 100644 src/battle_pyramid.c create mode 100644 src/data/text/nature_names.h create mode 100644 src/unk_pokedex_area_screen_helper.c (limited to 'src') diff --git a/src/battle_pyramid.c b/src/battle_pyramid.c new file mode 100644 index 000000000..f9cc48a9a --- /dev/null +++ b/src/battle_pyramid.c @@ -0,0 +1,248 @@ +#include "global.h" +#include "main.h" +#include "battle_controllers.h" +#include "bg.h" +#include "field_effect.h" +#include "field_weather.h" +#include "gpu_regs.h" +#include "malloc.h" +#include "menu.h" +#include "menu_helpers.h" +#include "overworld.h" +#include "palette.h" +#include "party_menu.h" +#include "scanline_effect.h" +#include "script.h" +#include "task.h" +#include "constants/rgb.h" + +EWRAM_DATA struct +{ + u32 unk0; + u8 filler4[0x804 - 0x4]; + u8 unk804[11]; + u8 unk80F[5]; + u8 unk814; + u8 filler815; + s8 unk816; + u8 filler817[0x984 - 0x817]; + u16 unk984; + u8 filler986[0x98C - 0x986]; +} *gUnknown_0203CF2C = NULL; +EWRAM_DATA struct +{ + void (*callback)(void); + u8 unk4; + u16 unk6; + u16 unk8; +} gUnknown_0203CF30 = {0}; + +extern const struct BgTemplate gUnknown_0861F2B4[3]; + +void sub_81C4F98(u8 a0, void (*callback)(void)); +void sub_81C4F44(u8 taskId); +void sub_81C504C(void); +bool8 sub_81C5078(void); +void sub_81C51DC(void); +bool8 sub_81C5238(void); +void sub_81C5314(void); +void sub_81C5674(void); +void sub_81C56F8(void); +void sub_81C5924(void); +void sub_81C59BC(void); +void sub_81C5A20(void); +void sub_81C6BD8(void); +void sub_81C6EF4(void); +void sub_81C700C(void); + +void sub_81C4EEC(void) +{ + gUnknown_0203CF30.unk6 = 0; + gUnknown_0203CF30.unk8 = 0; +} + +void sub_81C4EFC(void) +{ + sub_81C4F98(0, CB2_ReturnToFieldWithOpenMenu); +} + +void sub_81C4F10(void) +{ + sub_81C4F98(1, SetCB2ToReshowScreenAfterMenu2); +} + +void sub_81C4F24(void) +{ + ScriptContext2_Enable(); + FadeScreen(1, 0); + CreateTask(sub_81C4F44, 10); +} + +void sub_81C4F44(u8 taskId) +{ + if (!gPaletteFade.active) + { + overworld_free_bg_tilemaps(); + gFieldCallback2 = hm_add_c3_without_phase_2; + sub_81C4F98(3, CB2_ReturnToField); + DestroyTask(taskId); + } +} + +void sub_81C4F84(void) +{ + sub_81C4F98(4, gUnknown_0203CF30.callback); +} + +void sub_81C4F98(u8 a0, void (*callback)(void)) +{ + gUnknown_0203CF2C = AllocZeroed(sizeof(*gUnknown_0203CF2C)); + + if (a0 != 4) + { + gUnknown_0203CF30.unk4 = a0; + } + + if (callback != NULL) + { + gUnknown_0203CF30.callback = callback; + } + + gUnknown_0203CF2C->unk0 = 0; + gUnknown_0203CF2C->unk814 = -1; + gUnknown_0203CF2C->unk816 = -1; + + memset(gUnknown_0203CF2C->unk804, 0xFF, sizeof(gUnknown_0203CF2C->unk804)); + memset(gUnknown_0203CF2C->unk80F, 0xFF, sizeof(gUnknown_0203CF2C->unk80F)); + + SetMainCallback2(sub_81C504C); +} + +void sub_81C501C(void) +{ + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + do_scheduled_bg_tilemap_copies_to_vram(); + UpdatePaletteFade(); +} + +void sub_81C5038(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +void sub_81C504C(void) +{ + while (sub_81221EC() != TRUE && sub_81C5078() != TRUE && sub_81221AC() != TRUE); +} + +bool8 sub_81C5078(void) +{ + switch (gMain.state) + { + case 0: + SetVBlankHBlankCallbacksToNull(); + clear_scheduled_bg_copies_to_vram(); + gMain.state++; + break; + case 1: + ScanlineEffect_Stop(); + gMain.state++; + break; + case 2: + FreeAllSpritePalettes(); + gMain.state++; + break; + case 3: + ResetPaletteFade(); + gPaletteFade.bufferTransferDisabled = TRUE; + gMain.state++; + break; + case 4: + ResetSpriteData(); + gMain.state++; + break; + case 5: + if (!sub_81221AC()) + { + ResetTasks(); + } + gMain.state++; + break; + case 6: + sub_81C51DC(); + gUnknown_0203CF2C->unk984 = 0; + gMain.state++; + break; + case 7: + if (sub_81C5238()) + { + gMain.state++; + } + break; + case 8: + sub_81C6BD8(); + gMain.state++; + break; + case 9: + sub_81C5924(); + sub_81C59BC(); + sub_81C5A20(); + gMain.state++; + break; + case 10: + sub_81C5314(); + gMain.state++; + break; + case 11: + sub_81C56F8(); + gMain.state++; + break; + case 12: + sub_81C6EF4(); + gMain.state++; + break; + case 13: + sub_81C5674(); + gMain.state++; + break; + case 14: + sub_81C700C(); + gMain.state++; + break; + case 15: + BlendPalettes(0xFFFFFFFF, 0x10, 0); + gMain.state++; + break; + case 16: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK); + gPaletteFade.bufferTransferDisabled = FALSE; + gMain.state++; + break; + default: + SetVBlankCallback(sub_81C5038); + SetMainCallback2(sub_81C501C); + return TRUE; + } + return FALSE; +} + +void sub_81C51DC(void) +{ + ResetVramOamAndBgCntRegs(); + ResetBgsAndClearDma3BusyFlags(0); + InitBgsFromTemplates(0, gUnknown_0861F2B4, ARRAY_COUNT(gUnknown_0861F2B4)); + SetBgTilemapBuffer(2, gUnknown_0203CF2C->filler4); + ResetAllBgsCoordinates(); + schedule_bg_copy_tilemap_to_vram(2); + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | + DISPCNT_OBJ_1D_MAP | + DISPCNT_OBJ_ON); + ShowBg(0); + ShowBg(1); + ShowBg(2); + SetGpuReg(REG_OFFSET_BLDCNT, 0); +} diff --git a/src/data/text/nature_names.h b/src/data/text/nature_names.h new file mode 100644 index 000000000..d0d217d9b --- /dev/null +++ b/src/data/text/nature_names.h @@ -0,0 +1,54 @@ +static const u8 sHardyNatureName[] = _("HARDY"); +static const u8 sLonelyNatureName[] = _("LONELY"); +static const u8 sBraveNatureName[] = _("BRAVE"); +static const u8 sAdamantNatureName[] = _("ADAMANT"); +static const u8 sNaughtyNatureName[] = _("NAUGHTY"); +static const u8 sBoldNatureName[] = _("BOLD"); +static const u8 sDocileNatureName[] = _("DOCILE"); +static const u8 sRelaxedNatureName[] = _("RELAXED"); +static const u8 sImpishNatureName[] = _("IMPISH"); +static const u8 sLaxNatureName[] = _("LAX"); +static const u8 sTimidNatureName[] = _("TIMID"); +static const u8 sHastyNatureName[] = _("HASTY"); +static const u8 sSeriousNatureName[] = _("SERIOUS"); +static const u8 sJollyNatureName[] = _("JOLLY"); +static const u8 sNaiveNatureName[] = _("NAIVE"); +static const u8 sModestNatureName[] = _("MODEST"); +static const u8 sMildNatureName[] = _("MILD"); +static const u8 sQuietNatureName[] = _("QUIET"); +static const u8 sBashfulNatureName[] = _("BASHFUL"); +static const u8 sRashNatureName[] = _("RASH"); +static const u8 sCalmNatureName[] = _("CALM"); +static const u8 sGentleNatureName[] = _("GENTLE"); +static const u8 sSassyNatureName[] = _("SASSY"); +static const u8 sCarefulNatureName[] = _("CAREFUL"); +static const u8 sQuirkyNatureName[] = _("QUIRKY"); + +const u8 *const gNatureNamePointers[] = +{ + [NATURE_HARDY] = sHardyNatureName, + [NATURE_LONELY] = sLonelyNatureName, + [NATURE_BRAVE] = sBraveNatureName, + [NATURE_ADAMANT] = sAdamantNatureName, + [NATURE_NAUGHTY] = sNaughtyNatureName, + [NATURE_BOLD] = sBoldNatureName, + [NATURE_DOCILE] = sDocileNatureName, + [NATURE_RELAXED] = sRelaxedNatureName, + [NATURE_IMPISH] = sImpishNatureName, + [NATURE_LAX] = sLaxNatureName, + [NATURE_TIMID] = sTimidNatureName, + [NATURE_HASTY] = sHastyNatureName, + [NATURE_SERIOUS] = sSeriousNatureName, + [NATURE_JOLLY] = sJollyNatureName, + [NATURE_NAIVE] = sNaiveNatureName, + [NATURE_MODEST] = sModestNatureName, + [NATURE_MILD] = sMildNatureName, + [NATURE_QUIET] = sQuietNatureName, + [NATURE_BASHFUL] = sBashfulNatureName, + [NATURE_RASH] = sRashNatureName, + [NATURE_CALM] = sCalmNatureName, + [NATURE_GENTLE] = sGentleNatureName, + [NATURE_SASSY] = sSassyNatureName, + [NATURE_CAREFUL] = sCarefulNatureName, + [NATURE_QUIRKY] = sQuirkyNatureName, +}; diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index 7e20a2a92..b5117d45d 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -1,364 +1,731 @@ #include "global.h" +#include "main.h" #include "battle.h" +#include "battle_anim.h" +#include "battle_frontier_2.h" +#include "battle_message.h" +#include "battle_tent.h" #include "bg.h" +#include "contest.h" +#include "contest_effect.h" +#include "data2.h" +#include "daycare.h" #include "decompress.h" +#include "dynamic_placeholder_text_util.h" +#include "event_data.h" +#include "gpu_regs.h" +#include "graphics.h" +#include "international_string_util.h" #include "item.h" -#include "constants/items.h" #include "link.h" #include "m4a.h" -#include "main.h" #include "malloc.h" -#include "constants/moves.h" +#include "menu.h" +#include "menu_helpers.h" +#include "mon_markings.h" +#include "party_menu.h" #include "palette.h" +#include "pokeball.h" #include "pokemon.h" -#include "constants/songs.h" +#include "pokemon_storage_system.h" +#include "region_map.h" +#include "scanline_effect.h" #include "sound.h" -#include "constants/species.h" #include "sprite.h" -#include "dynamic_placeholder_text_util.h" #include "string_util.h" +#include "strings.h" #include "task.h" #include "text.h" +#include "tv.h" #include "window.h" -#include "event_data.h" -#include "gpu_regs.h" -#include "menu.h" -#include "international_string_util.h" -#include "scanline_effect.h" -#include "menu_helpers.h" -#include "daycare.h" -#include "data2.h" -#include "contest.h" -#include "contest_effect.h" +#include "constants/items.h" +#include "constants/moves.h" +#include "constants/songs.h" +#include "constants/species.h" -extern struct UnkSummaryStruct* gUnknown_0203CF1C; -extern struct BgTemplate gUnknown_0861CBB4; -extern u8 gUnknown_0203CF20; -extern struct MusicPlayerInfo gMPlayInfo_BGM; -extern s8 gUnknown_0861CC1C[]; -extern u8 gUnknown_0203CF21; -extern struct UnkStruct_61CC04 gUnknown_0861CC04; -extern struct UnkStruct_61CC04 gUnknown_0861CC10; -extern struct UnkStruct_61CC04 gUnknown_0861CBEC; -extern struct UnkStruct_61CC04 gUnknown_0861CBF8; -extern u16 gSummaryScreenWindow_Tilemap[]; -extern struct ContestEffect gContestEffects[]; -extern struct WindowTemplate gUnknown_0861CC24; -extern u8 gUnknown_0861CD2C[][3]; -extern const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1]; -extern u8 gText_MaleSymbol[]; -extern u8 gText_FemaleSymbol[]; -extern u8 gUnknown_0861CDD3[]; -extern void (*const gUnknown_0861CE54[])(); -extern void (*const gUnknown_0861CE64[])(u8 taskId); -extern struct WindowTemplate gUnknown_0861CCCC; -extern u8 gUnknown_0861CE74[]; -extern u8 gUnknown_0861CE7B[]; -extern struct WindowTemplate gUnknown_0861CCEC; -extern struct WindowTemplate gUnknown_0861CD14; -extern const u8 *const gContestEffectDescriptionPointers[]; +static EWRAM_DATA struct UnkSummaryStruct +{ + /*0x00*/ union + { + struct Pokemon *mons; + struct BoxPokemon *boxMons; + } monList; + /*0x04*/ void (*callback)(void); + /*0x08*/ struct Sprite *markingsSpriteId; + /*0x0C*/ struct Pokemon currentMon; + /*0x70*/ struct PokeSummary + { + u16 species; // 0x0 + u16 species2; // 0x2 + u8 isEgg; // 0x4 + u8 level; // 0x5 + u8 ribbons; // 0x6 + u8 unk7; // 0x7 + u8 altAbility; // 0x8 + u8 metLocation; // 0x9 + u8 metLevel; // 0xA + u8 metGame; // 0xB + u32 pid; // 0xC + u32 exp; // 0x10 + u16 moves[4]; // 0x14 + u8 pp[4]; // 0x1C + u16 currentHP; // 0x20 + u16 maxHP; // 0x22 + u16 atk; // 0x24 + u16 def; // 0x26 + u16 spatk; // 0x28 + u16 spdef; // 0x2A + u16 speed; // 0x2C + u16 item; // 0x2E + u16 friendship; // 0x30 + u8 OTGender; // 0x32 + u8 nature; // 0x33 + u8 ppBonuses; // 0x34 + u8 sanity; // 0x35 + u8 OTName[8]; // 0x36 + u8 unk3E[9]; // 0x3E + u32 OTID; // 0x48 + } summary; + u16 bgTilemapBuffer1[0x800]; + u16 bgTilemapBuffer2[0x800]; + u16 bgTilemapBuffer3[0x800]; + u16 bgTilemapBuffer4[0x800]; + u8 mode; + bool8 isBoxMon; + u8 curMonIndex; + u8 maxMonIndex; + u8 unk40C0; + u8 unk40C1; + u8 unk40C2; + bool8 unk40C3; + u16 newMove; + u8 firstMoveIndex; + u8 secondMoveIndex; + bool8 unk40C8; + u8 unk40C9; + u8 filler40CA; + u8 windowIds[8]; + u8 spriteIds[28]; + bool8 unk40EF; + s16 unk40F0; + u8 unk_filler4[6]; +} *gUnknown_0203CF1C = NULL; +EWRAM_DATA u8 gUnknown_0203CF20 = 0; +static EWRAM_DATA u8 gUnknown_0203CF21 = 0; +static EWRAM_DATA u8 gFiller_0203CF22[2] = {0}; +static EWRAM_DATA u8 sUnusedTaskId = 0; +static EWRAM_DATA u8 gFiller_0203CF25[3] = {0}; -void sub_81C488C(u8 a); -extern u8 sub_81221EC(); -extern u8 sub_81221AC(); -extern u8 gUnknown_08D9862C; -extern u8 gUnknown_08D98CC8; -extern u8 gUnknown_08D987FC; -extern u8 gUnknown_08D9898C; -extern u8 gUnknown_08D98B28; -extern u8 gUnknown_08D9853C; -extern u8 gUnknown_08D85620; -extern struct CompressedSpriteSheet gUnknown_0861CFBC; -extern struct CompressedSpriteSheet gUnknown_0861D074; -extern struct CompressedSpriteSheet gUnknown_0861D0F8; -extern struct CompressedSpritePalette gUnknown_0861D100; -extern struct CompressedSpritePalette gUnknown_0861D07C; -extern u8 gMoveTypes_Pal; -extern u8 gUnknown_08D97D0C; -extern void sub_81C1E20(u8 taskId); -extern u8 *GetMonNickname(struct Pokemon *mon, u8 *dest); -extern u16 SpeciesToPokedexNum(u16 species); -extern u8 gText_UnkCtrlF908Clear01[]; -extern u8 gText_LevelSymbol[]; -extern u8 gText_PkmnInfo[]; -extern u8 gText_PkmnSkills[]; -extern u8 gText_BattleMoves[]; -extern u8 gText_ContestMoves[]; -extern u8 gText_HMMovesCantBeForgotten2[]; -extern u8 gText_Cancel2[]; -extern u8 gText_Info[]; -extern u8 gText_Switch[]; -extern u8 gText_RentalPkmn[]; -extern u8 gText_TypeSlash[]; -extern u8 gText_HP4[]; -extern u8 gText_Attack3[]; -extern u8 gText_Defense3[]; -extern u8 gText_SpAtk4[]; -extern u8 gText_SpDef4[]; -extern u8 gText_Speed2[]; -extern u8 gText_ExpPoints[]; -extern u8 gText_NextLv[]; -extern u8 gText_Status[]; -extern u8 gText_Power[]; -extern u8 gText_Accuracy2[]; -extern u8 gText_Appeal[]; -extern u8 gText_Jam[]; -extern u8 gText_OTSlash[]; -extern u8 gText_UnkCtrlF907F908[]; -extern u8 gText_XNature[]; -extern u8 gText_XNatureHatchedAtYZ[]; -extern u8 gText_XNatureHatchedSomewhereAt[]; -extern u8 gText_XNatureMetAtYZ[]; -extern u8 gText_XNatureMetSomewhereAt[]; -extern u8 gText_XNatureFatefulEncounter[]; -extern u8 gText_XNatureProbablyMetAt[]; -extern u8 gText_XNatureObtainedInTrade[]; -extern u8 *gNatureNamePointers[]; -extern u8 gText_EmptyString5[]; -extern u32 gBattleTypeFlags; -extern u8 gText_FiveMarks[]; -extern u8 gText_EggWillTakeALongTime[]; -extern u8 gText_EggAboutToHatch[]; -extern u8 gText_EggWillHatchSoon[]; -extern u8 gText_EggWillTakeSomeTime[]; -extern u8 gText_PeculiarEggNicePlace[]; -extern u8 gText_PeculiarEggTrade[]; -extern u8 gText_EggFromTraveler[]; -extern u8 gText_EggFromHotSprings[]; -extern u8 gText_OddEggFoundByCouple[]; -extern u8 gText_None[]; -extern u8 gText_RibbonsVar1[]; -extern u8 gUnknown_0861CE82[]; -extern u8 gUnknown_0861CE8E[]; -extern u8 gText_OneDash[]; -extern u8 gText_TwoDashes[]; -extern u8 gText_ThreeDashes[]; -extern u8 gText_Cancel[]; -extern u8 gUnknown_0861CE97[]; -extern const struct SpriteTemplate gUnknown_0861CFC4; - -extern void sub_8199C30(u8 a, u8 b, u8 c, u8 d, u8 e, u8 f); -extern bool8 sub_81A6BF4(); -extern bool8 sub_81B9E94(); -extern void DynamicPlaceholderTextUtil_Reset(); -extern void sub_8124610(u8 *a, u8 b); -extern int GetPlayerIDAsU32(); -extern u8 GetCurrentPpToMaxPpState(u8 a, u8 b); +extern const struct CompressedSpriteSheet gMonFrontPicTable[]; + +struct UnkStruct_61CC04 +{ + const u16 *ptr; + u16 field_4; + u8 field_6; + u8 field_7; + u8 field_8; + u8 field_9; +}; +// forward declarations +bool8 sub_81B1250(void); +bool8 sub_81BFB10(void); void sub_81BFAE4(void); -void sub_81BFE24(); -u8 sub_81BFEB0(); -void sub_81C2554(); -void sub_81C1BA0(); +void sub_81BFE24(void); +u8 sub_81BFEB0(void); void sub_81C0098(struct Pokemon* a); bool8 sub_81C00F0(struct Pokemon* a); -void sub_81C25E8(); -void sub_81C286C(); -void sub_81C2D9C(u8 a); -void sub_81C0348(); -void sub_81C2AFC(u8 a); -void sub_81C4190(); -void sub_81C42C8(); -u8 sub_81C45F4(void* a, u16* b); -void sub_81C4984(); -void sub_81C4A08(); -void sub_81C4A88(); -void sub_81C4280(); -void sub_81C43A0(); -void sub_81C4484(); -void sub_81C4420(); -void sub_81C0510(u8 taskId); -void sub_81C171C(u8 taskId); -void ResetAllBgsCoordinates(); -u8 sub_81B205C(struct Pokemon* a); -void sub_81C1DA4(u16 a, s16 b); -void sub_81C1EFC(u16 a, s16 b, u16 c); -void sub_81C240C(u16 a); -void sub_81C2194(u16 *a, u16 b, u8 c); -void sub_81C2074(u16 a, s16 b); -void sub_81C2524(); -void sub_81C2228(struct Pokemon* mon); +void sub_81C0348(void); void sub_81C0484(u8 taskId); -void sub_81C4898(); -void sub_806F47C(u8 a); -u8 GetLRKeysState(); +void sub_81C0510(u8 taskId); void sub_81C0604(u8 taskId, s8 a); -void sub_81C0A8C(u8 taskId, s8 a); -void sub_81C48F0(); -void sub_81C0E48(u8 taskId); void sub_81C0704(u8 taskId); -s8 sub_81C09B4(s8 a); s8 sub_81C08F8(s8 a); -void sub_81C4204(u8 a, u8 b); -void sub_81C20F0(u8 taskId); +s8 sub_81C09B4(s8 a); bool8 sub_81C0A50(struct Pokemon* mon); -void sub_81C49E0(); -void sub_81C0E24(); -void sub_81C2C38(u8 a); +void sub_81C0A8C(u8 taskId, s8 a); void sub_81C0B8C(u8 taskId); -void sub_81C0CC4(u8 taskId); -void sub_81C2DE4(u8 a); -void sub_81C424C(); void sub_81C0C68(u8 taskId); +void sub_81C0CC4(u8 taskId); void sub_81C0D44(u8 taskId); -void sub_81C22CC(struct Pokemon* mon); +void sub_81C0E24(void); +void sub_81C0E48(u8 taskId); void sub_81C0F44(u8 taskId); -void sub_81C3E9C(u16 a); -void sub_81C3F44(); -void sub_81C44F0(); -void sub_81C4AF8(u8 a); +bool8 sub_81C1040(void); void sub_81C1070(s16* a, s8 b, u8* c); void sub_81C11F4(u8 a); void sub_81C129C(u8 a); -bool8 sub_81C1040(); -void sub_81C4064(); -void sub_81C4C60(u8 a); void sub_81C12E4(u8 taskId); -void sub_81C4C84(u8 a); void sub_81C13B0(u8 a, u8 b); void sub_81C14BC(struct Pokemon *mon, u8 a, u8 b); void sub_81C15EC(struct BoxPokemon *mon, u8 a, u8 b); -void sub_81C40A0(u8 a, u8 b); -void sub_81C4568(u8 a, u8 b); +void sub_81C171C(u8 taskId); void sub_81C174C(u8 taskId); -bool8 sub_81C18A8(); +bool8 sub_81C18A8(void); void sub_81C18F4(u8 a); -u8 sub_81B6D14(u16 a); void sub_81C1940(u8 taskId); -void sub_81C4154(); +void sub_81C1BA0(void); +void sub_81C1DA4(u16 a, s16 b); +void sub_81C1E20(u8 taskId); +void sub_81C1EFC(u16 a, s16 b, u16 c); void sub_81C1F80(u8 taskId); -void sub_81C2628(); -void sub_81C2794(); +void sub_81C2074(u16 a, s16 b); +void sub_81C20F0(u8 taskId); +void sub_81C2194(u16 *a, u16 b, u8 c); +void sub_81C2228(struct Pokemon* mon); +void sub_81C22CC(struct Pokemon* mon); +void sub_81C240C(u16 a); +void sub_81C2524(void); +void sub_81C2554(void); +void sub_81C25E8(void); +void sub_81C2628(void); +void sub_81C2794(void); void sub_81C27DC(struct Pokemon *mon, u16 a); +void sub_81C286C(void); +void sub_81C2AFC(u8 a); +void sub_81C2C38(u8 a); void sub_81C2D68(u8 a); -void sub_81C335C(); -void sub_81C33CC(); -void sub_81C3428(); -void sub_81C349C(); -void sub_81C2EC4(); -void sub_81C2F5C(); -void sub_81C2FD8(); -void sub_81C302C(); -void sub_81C307C(); -void sub_81C3194(); -void sub_81C31C0(); -bool8 sub_81C3304(); +void sub_81C2D9C(u8 a); +void sub_81C2DE4(u8 a); +void sub_81C2E00(void); +void sub_81C2E40(u8 taskId); +void sub_81C2EC4(void); +void sub_81C2F5C(void); +void sub_81C2FD8(void); +void sub_81C302C(void); +void sub_81C307C(void); +void sub_81C3194(void); +void sub_81C31C0(void); void sub_81C31F0(u8 *a); -u8 sub_81C3220(); -bool8 sub_81C32BC(); -void sub_81C35E4(); -void sub_81C3690(); -void sub_81C3710(); -void sub_81C37D8(); -void sub_81C3808(); -void sub_81C3890(); -void sub_81C38C0(); +u8 sub_81C3220(void); +bool8 sub_81C32BC(void); +bool8 sub_81C3304(void); +void sub_81C335C(void); +void sub_81C33CC(void); +void sub_81C3428(void); +void sub_81C349C(void); +void sub_81C3554(u8 taskId); +void sub_81C35E4(void); +void sub_81C3530(void); +void sub_81C3690(void); +void sub_81C3710(void); +void sub_81C37D8(void); +void sub_81C3808(void); +void sub_81C3890(void); +void sub_81C38C0(void); +void sub_81C3984(void); +void sub_81C39F0(u8 taskId); void sub_81C3B08(u8 a); +void sub_81C3D08(void); +void sub_81C3D54(u8 taskId); void sub_81C3E2C(u8 a); -void sub_81C4D18(); - -void SetBgAttribute(u8 bg, u8 attributeId, u8 value); - -bool8 sub_81BFB10(); -u8 sub_81B1250(); - -union UnkUnion -{ - struct Pokemon mon[6]; - struct BoxPokemon boxMon[6]; -}; - - -u8 sub_80D214C(union UnkUnion* a, u8 b, u8 c, u8 d); - -struct PokeSummary -{ - u16 species; // 0x0 - u16 species2; // 0x2 - u8 isEgg; // 0x4 - u8 level; // 0x5 - u8 ribbons; // 0x6 - u8 unk7; // 0x7 - u8 altAbility; // 0x8 - u8 metLocation; // 0x9 - u8 metLevel; // 0xA - u8 metGame; // 0xB - u32 pid; // 0xC - u32 exp; // 0x10 - u16 moves[4]; // 0x14 - u8 pp[4]; // 0x1C - u16 currentHP; // 0x20 - u16 maxHP; // 0x22 - u16 atk; // 0x24 - u16 def; // 0x26 - u16 spatk; // 0x28 - u16 spdef; // 0x2A - u16 speed; // 0x2C - u16 item; // 0x2E - u16 friendship; // 0x30 - u8 OTGender; // 0x32 - u8 nature; // 0x33 - u8 ppBonuses; // 0x34 - u8 sanity; // 0x35 - u8 OTName[8]; // 0x36 - u8 unk3E[9]; // 0x3E - u32 OTID; // 0x48 -}; - -struct UnkSummaryStruct -{ - /*0x00*/ union UnkUnion *unk0; - /*0x04*/ void *unk4; - /*0x08*/ void *unk8; - /*0x0C*/ struct Pokemon currentMon; - /*0x70*/ struct PokeSummary summary; - u16 unkTilemap0[0x400]; - u16 unkTilemap0_1[0x400]; - u16 unkTilemap1[0x400]; - u16 unkTilemap1_1[0x400]; - u16 unkTilemap2[0x400]; - u16 unkTilemap2_1[0x400]; - u16 unkTilemap3[0x400]; - u16 unkTilemap3_1[0x400]; - u8 unk40BC; - u8 unk40BD; - u8 unk40BE; - u8 unk40BF; - u8 unk40C0; - u8 unk40C1; - u8 unk40C2; - u8 unk40C3; - u16 unk40C4; - u8 unk40C6; - u8 unk40C7; - u8 unk40C8; - u8 unk40C9; - u8 unk40CA; - u8 unk40CB[8]; - u8 unk40D3[0x1C]; - u8 unk40EF; - s16 unk40F0; - u8 unk_filler4[6]; -}; +void sub_81C3E9C(u16 a); +void sub_81C3F44(void); +void sub_81C4064(void); +void sub_81C40A0(u8 a, u8 b); +void sub_81C4154(void); +void sub_81C4190(void); +void sub_81C4204(u8 a, u8 b); +void sub_81C424C(void); +void sub_81C4280(void); +void sub_81C42C8(void); +void sub_81C43A0(void); +void sub_81C4420(void); +void sub_81C4484(void); +void sub_81C44F0(void); +void sub_81C4568(u8 a, u8 b); +u8 sub_81C45F4(struct Pokemon *a, s16 *b); +u8 sub_81C47B4(struct Pokemon *unused); +void sub_81C4844(struct Sprite *); +void sub_81C488C(u8 a); +void sub_81C4898(void); +void sub_81C48F0(void); +void sub_81C4984(struct Pokemon *mon); +void sub_81C49E0(struct Pokemon *mon); +void sub_81C4A08(struct Pokemon *mon); +void sub_81C4A88(void); +void sub_81C4AF8(u8 a); +void sub_81C4BE4(struct Sprite *sprite); +void sub_81C4C60(u8 a); +void sub_81C4C84(u8 a); +void sub_81C4D18(u8 a); // const rom data #include "data/text/move_descriptions.h" +#include "data/text/nature_names.h" + +static const struct BgTemplate gUnknown_0861CBB4[] = +{ + { + .bg = 0, + .charBaseIndex = 0, + .mapBaseIndex = 31, + .screenSize = 0, + .paletteMode = 0, + .priority = 0, + .baseTile = 0, + }, + { + .bg = 1, + .charBaseIndex = 2, + .mapBaseIndex = 27, + .screenSize = 1, + .paletteMode = 0, + .priority = 1, + .baseTile = 0, + }, + { + .bg = 2, + .charBaseIndex = 2, + .mapBaseIndex = 25, + .screenSize = 1, + .paletteMode = 0, + .priority = 2, + .baseTile = 0, + }, + { + .bg = 3, + .charBaseIndex = 2, + .mapBaseIndex = 29, + .screenSize = 1, + .paletteMode = 0, + .priority = 3, + .baseTile = 0, + }, +}; + +static const u16 gUnknown_0861CBC4[] = INCBIN_U16("graphics/interface/unk_tilemap2.bin"); +static const struct UnkStruct_61CC04 gUnknown_0861CBEC = +{ + gUnknown_0861CBC4, 1, 10, 2, 0, 18 +}; +static const struct UnkStruct_61CC04 gUnknown_0861CBF8 = +{ + gUnknown_0861CBC4, 1, 10, 2, 0, 50 +}; +static const struct UnkStruct_61CC04 gUnknown_0861CC04 = +{ + gSummaryScreenPowAcc_Tilemap, 0, 10, 7, 0, 45 +}; +static const struct UnkStruct_61CC04 gUnknown_0861CC10 = +{ + gUnknown_08DC3C34, 0, 10, 7, 0, 45 +}; +static const s8 gUnknown_0861CC1C[] = {0, 2, 3, 1, 4, 5}; +static const struct WindowTemplate gUnknown_0861CC24[] = +{ + { 0x00, 0x00, 0x00, 0x0b, 0x02, 0x06, 0x0001 }, + { 0x00, 0x00, 0x00, 0x0b, 0x02, 0x06, 0x0017 }, + { 0x00, 0x00, 0x00, 0x0b, 0x02, 0x06, 0x002d }, + { 0x00, 0x00, 0x00, 0x0b, 0x02, 0x06, 0x0043 }, + { 0x00, 0x16, 0x00, 0x08, 0x02, 0x07, 0x0059 }, + { 0x00, 0x16, 0x00, 0x08, 0x02, 0x07, 0x0069 }, + { 0x00, 0x16, 0x00, 0x08, 0x02, 0x07, 0x0079 }, + { 0x00, 0x0b, 0x04, 0x00, 0x02, 0x06, 0x0089 }, + { 0x00, 0x0b, 0x04, 0x12, 0x02, 0x06, 0x0089 }, + { 0x00, 0x0b, 0x06, 0x12, 0x02, 0x06, 0x00ad }, + { 0x00, 0x0a, 0x07, 0x06, 0x06, 0x06, 0x00d1 }, + { 0x00, 0x16, 0x07, 0x05, 0x06, 0x06, 0x00f5 }, + { 0x00, 0x0a, 0x0e, 0x0b, 0x04, 0x06, 0x0113 }, + { 0x00, 0x00, 0x12, 0x06, 0x02, 0x06, 0x013f }, + { 0x00, 0x01, 0x0f, 0x09, 0x04, 0x06, 0x014b }, + { 0x00, 0x01, 0x0f, 0x05, 0x04, 0x06, 0x016f }, + { 0x00, 0x16, 0x04, 0x00, 0x02, 0x06, 0x0183 }, + { 0x00, 0x01, 0x02, 0x04, 0x02, 0x07, 0x0183 }, + { 0x00, 0x01, 0x0c, 0x09, 0x02, 0x06, 0x018b }, + { 0x00, 0x01, 0x0e, 0x09, 0x04, 0x06, 0x019d }, + DUMMY_WIN_TEMPLATE +}; +static const struct WindowTemplate gUnknown_0861CCCC[] = +{ + { 0x00, 0x0b, 0x04, 0x0b, 0x02, 0x06, 0x01c1 }, + { 0x00, 0x16, 0x04, 0x07, 0x02, 0x06, 0x01d7 }, + { 0x00, 0x0b, 0x09, 0x12, 0x04, 0x06, 0x01e5 }, + { 0x00, 0x0b, 0x0e, 0x12, 0x06, 0x06, 0x022d }, +}; +static const struct WindowTemplate gUnknown_0861CCEC[] = +{ + { 0x00, 0x0a, 0x04, 0x0a, 0x02, 0x06, 0x01c1 }, + { 0x00, 0x14, 0x04, 0x0a, 0x02, 0x06, 0x01d5 }, + { 0x00, 0x10, 0x07, 0x06, 0x06, 0x06, 0x01e9 }, + { 0x00, 0x1b, 0x07, 0x03, 0x06, 0x06, 0x020d }, + { 0x00, 0x18, 0x0e, 0x06, 0x04, 0x06, 0x021f }, +}; +static const struct WindowTemplate gUnknown_0861CD14[] = +{ + { 0x00, 0x0f, 0x04, 0x09, 0x0a, 0x06, 0x01c1 }, + { 0x00, 0x18, 0x04, 0x06, 0x0a, 0x08, 0x021b }, + { 0x00, 0x0a, 0x0f, 0x14, 0x04, 0x06, 0x0257 }, +}; +static const u8 sTextColors_861CD2C[][3] = +{ + {0, 1, 2}, + {0, 3, 4}, + {0, 5, 6}, + {0, 7, 8}, + {0, 9, 10}, + {0, 11, 12}, + {0, 13, 14}, + {0, 7, 8}, + {13, 15, 14}, + {0, 1, 2}, + {0, 3, 4}, + {0, 5, 6}, + {0, 7, 8} +}; +static const u8 gUnknown_0861CD53[] = INCBIN_U8("graphics/interface/summary_a_button.4bpp"); +static const u8 gUnknown_0861CDD3[] = INCBIN_U8("graphics/interface/summary_b_button.4bpp"); +static void (*const gUnknown_0861CE54[])(void) = +{ + sub_81C2E00, + sub_81C3530, + sub_81C3984, + sub_81C3D08 +}; +static void (*const gUnknown_0861CE64[])(u8 taskId) = +{ + sub_81C2E40, + sub_81C3554, + sub_81C39F0, + sub_81C3D54 +}; +static const u8 gUnknown_0861CE74[] = _("{COLOR LIGHT_RED}{SHADOW GREEN}"); +static const u8 gUnknown_0861CE7B[] = _("{COLOR WHITE}{SHADOW DARK_GREY}"); +static const u8 gUnknown_0861CE82[] = _("{SPECIAL_F7 0x00}/{SPECIAL_F7 0x01}\n{SPECIAL_F7 0x02}\n{SPECIAL_F7 0x03}"); +static const u8 gUnknown_0861CE8E[] = _("{SPECIAL_F7 0x00}\n{SPECIAL_F7 0x01}\n{SPECIAL_F7 0x02}"); +static const u8 gUnknown_0861CE97[] = _("{PP}{SPECIAL_F7 0x00}/{SPECIAL_F7 0x01}"); +static const struct OamData gOamData_861CEA0 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 1, + .x = 0, + .matrixNum = 0, + .size = 2, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; +static const union AnimCmd gSpriteAnim_861CEA8[] = { + ANIMCMD_FRAME(0, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd gSpriteAnim_861CEB0[] = { + ANIMCMD_FRAME(8, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd gSpriteAnim_861CEB8[] = { + ANIMCMD_FRAME(16, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd gSpriteAnim_861CEC0[] = { + ANIMCMD_FRAME(24, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd gSpriteAnim_861CEC8[] = { + ANIMCMD_FRAME(32, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd gSpriteAnim_861CED0[] = { + ANIMCMD_FRAME(40, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd gSpriteAnim_861CED8[] = { + ANIMCMD_FRAME(48, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd gSpriteAnim_861CEE0[] = { + ANIMCMD_FRAME(56, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd gSpriteAnim_861CEE8[] = { + ANIMCMD_FRAME(64, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd gSpriteAnim_861CEF0[] = { + ANIMCMD_FRAME(72, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd gSpriteAnim_861CEF8[] = { + ANIMCMD_FRAME(80, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd gSpriteAnim_861CF00[] = { + ANIMCMD_FRAME(88, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd gSpriteAnim_861CF08[] = { + ANIMCMD_FRAME(96, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd gSpriteAnim_861CF10[] = { + ANIMCMD_FRAME(104, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd gSpriteAnim_861CF18[] = { + ANIMCMD_FRAME(112, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd gSpriteAnim_861CF20[] = { + ANIMCMD_FRAME(120, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd gSpriteAnim_861CF28[] = { + ANIMCMD_FRAME(128, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd gSpriteAnim_861CF30[] = { + ANIMCMD_FRAME(136, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd gSpriteAnim_861CF38[] = { + ANIMCMD_FRAME(144, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd gSpriteAnim_861CF40[] = { + ANIMCMD_FRAME(152, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd gSpriteAnim_861CF48[] = { + ANIMCMD_FRAME(160, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd gSpriteAnim_861CF50[] = { + ANIMCMD_FRAME(168, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd gSpriteAnim_861CF58[] = { + ANIMCMD_FRAME(176, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd *const gSpriteAnimTable_861CF60[] = { + gSpriteAnim_861CEA8, + gSpriteAnim_861CEB0, + gSpriteAnim_861CEB8, + gSpriteAnim_861CEC0, + gSpriteAnim_861CEC8, + gSpriteAnim_861CED0, + gSpriteAnim_861CED8, + gSpriteAnim_861CEE0, + gSpriteAnim_861CEE8, + gSpriteAnim_861CEF0, + gSpriteAnim_861CEF8, + gSpriteAnim_861CF00, + gSpriteAnim_861CF08, + gSpriteAnim_861CF10, + gSpriteAnim_861CF18, + gSpriteAnim_861CF20, + gSpriteAnim_861CF28, + gSpriteAnim_861CF30, + gSpriteAnim_861CF38, + gSpriteAnim_861CF40, + gSpriteAnim_861CF48, + gSpriteAnim_861CF50, + gSpriteAnim_861CF58, +}; +static const struct CompressedSpriteSheet gUnknown_0861CFBC = +{ + .data = gMoveTypes_Gfx, + .size = 0x1700, + .tag = 30002 +}; +static const struct SpriteTemplate gUnknown_0861CFC4 = +{ + .tileTag = 30002, + .paletteTag = 30002, + .oam = &gOamData_861CEA0, + .anims = gSpriteAnimTable_861CF60, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy +}; +static const u8 gUnknown_0861CFDC[] = {13, 13, 14, 14, 13, 13, 15, 14, 13, 15, 13, 14, 15, 13, 14, 14, 15, 13, 13, 14, 14, 15, 13}; +static const struct OamData gOamData_861CFF4 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 1, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; +static const union AnimCmd gSpriteAnim_861CFFC[] = { + ANIMCMD_FRAME(0, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd gSpriteAnim_861D004[] = { + ANIMCMD_FRAME(4, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd gSpriteAnim_861D00C[] = { + ANIMCMD_FRAME(8, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd gSpriteAnim_861D014[] = { + ANIMCMD_FRAME(12, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd gSpriteAnim_861D01C[] = { + ANIMCMD_FRAME(16, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd gSpriteAnim_861D024[] = { + ANIMCMD_FRAME(16, 0, TRUE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd gSpriteAnim_861D02C[] = { + ANIMCMD_FRAME(20, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd gSpriteAnim_861D034[] = { + ANIMCMD_FRAME(24, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd gSpriteAnim_861D03C[] = { + ANIMCMD_FRAME(24, 0, TRUE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd gSpriteAnim_861D044[] = { + ANIMCMD_FRAME(28, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd *const gSpriteAnimTable_861D04C[] = { + gSpriteAnim_861CFFC, + gSpriteAnim_861D004, + gSpriteAnim_861D00C, + gSpriteAnim_861D014, + gSpriteAnim_861D01C, + gSpriteAnim_861D024, + gSpriteAnim_861D02C, + gSpriteAnim_861D034, + gSpriteAnim_861D03C, + gSpriteAnim_861D044, +}; +static const struct CompressedSpriteSheet gUnknown_0861D074 = +{ + .data = gUnknown_08D97BEC, + .size = 0x400, + .tag = 30000 +}; +static const struct CompressedSpritePalette gUnknown_0861D07C = +{ + .data = gUnknown_08D97CF4, + .tag = 30000 +}; +static const struct SpriteTemplate gUnknown_0861D084 = +{ + .tileTag = 30000, + .paletteTag = 30000, + .oam = &gOamData_861CFF4, + .anims = gSpriteAnimTable_861D04C, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy +}; + const struct OamData gOamData_861D09C = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 1, + .x = 0, + .matrixNum = 0, + .size = 1, + .tileNum = 0, + .priority = 3, + .paletteNum = 0, + .affineParam = 0, +}; +static const union AnimCmd gSpriteAnim_861D0A4[] = { + ANIMCMD_FRAME(0, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd gSpriteAnim_861D0AC[] = { + ANIMCMD_FRAME(4, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd gSpriteAnim_861D0B4[] = { + ANIMCMD_FRAME(8, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd gSpriteAnim_861D0BC[] = { + ANIMCMD_FRAME(12, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd gSpriteAnim_861D0C4[] = { + ANIMCMD_FRAME(16, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd gSpriteAnim_861D0CC[] = { + ANIMCMD_FRAME(20, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd gSpriteAnim_861D0D4[] = { + ANIMCMD_FRAME(24, 0, FALSE, FALSE), + ANIMCMD_END +}; + const union AnimCmd *const gSpriteAnimTable_861D0DC[] = { + gSpriteAnim_861D0A4, + gSpriteAnim_861D0AC, + gSpriteAnim_861D0B4, + gSpriteAnim_861D0BC, + gSpriteAnim_861D0C4, + gSpriteAnim_861D0CC, + gSpriteAnim_861D0D4, +}; +static const struct CompressedSpriteSheet gUnknown_0861D0F8 = +{ + .data = gStatusGfx_Icons, + .size = 0x380, + .tag = 30001 +}; +static const struct CompressedSpritePalette gUnknown_0861D100 = +{ + .data = gStatusPal_Icons, + .tag = 30001 +}; +static const struct SpriteTemplate gUnknown_0861D108 = +{ + .tileTag = 30001, + .paletteTag = 30001, + .oam = &gOamData_861D09C, + .anims = gSpriteAnimTable_861D0DC, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy +}; +static const u16 gUnknown_0861D120[] = INCBIN_U16("graphics/interface/summary_markings.gbapal"); // code -void sub_81BF8EC(u8 a, void *b, u8 c, u8 d, void *e) -{ - u8 byte; - gUnknown_0203CF1C = AllocZeroed(sizeof(struct UnkSummaryStruct)); - gUnknown_0203CF1C->unk40BC = a; - gUnknown_0203CF1C->unk0 = b; - gUnknown_0203CF1C->unk40BE = c; - gUnknown_0203CF1C->unk40BF = d; - gUnknown_0203CF1C->unk4 = e; - if (a == 2) - gUnknown_0203CF1C->unk40BD = 1; +void sub_81BF8EC(u8 mode, void *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void)) +{ + gUnknown_0203CF1C = AllocZeroed(sizeof(*gUnknown_0203CF1C)); + gUnknown_0203CF1C->mode = mode; + gUnknown_0203CF1C->monList.mons = mons; + gUnknown_0203CF1C->curMonIndex = monIndex; + gUnknown_0203CF1C->maxMonIndex = maxMonIndex; + gUnknown_0203CF1C->callback = callback; + + if (mode == 2) + gUnknown_0203CF1C->isBoxMon = TRUE; else - gUnknown_0203CF1C->unk40BD = 0; - switch (a) + gUnknown_0203CF1C->isBoxMon = FALSE; + + switch (mode) { case 0: case 2: @@ -368,32 +735,34 @@ void sub_81BF8EC(u8 a, void *b, u8 c, u8 d, void *e) case 1: gUnknown_0203CF1C->unk40C1 = 0; gUnknown_0203CF1C->unk40C2 = 3; - gUnknown_0203CF1C->unk40C8 = 1; + gUnknown_0203CF1C->unk40C8 = TRUE; break; case 3: gUnknown_0203CF1C->unk40C1 = 2; gUnknown_0203CF1C->unk40C2 = 3; - gUnknown_0203CF1C->unk40C3 = 1; + gUnknown_0203CF1C->unk40C3 = TRUE; break; } - byte = gUnknown_0203CF1C->unk40C1; - gUnknown_0203CF1C->unk40C0 = byte; - sub_81C488C(0xFF); + + gUnknown_0203CF1C->unk40C0 = gUnknown_0203CF1C->unk40C1; + sub_81C488C(-1); + if (gMonSpritesGfxPtr == 0) sub_806F2AC(0, 0); + SetMainCallback2(sub_81BFAE4); } -void ShowSelectMovePokemonSummaryScreen(void *a, u8 b, u8 c, void *d, u16 e) +void ShowSelectMovePokemonSummaryScreen(struct Pokemon *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void), u16 newMove) { - sub_81BF8EC(3, a, b, c, d); - gUnknown_0203CF1C->unk40C4 = e; + sub_81BF8EC(3, mons, monIndex, maxMonIndex, callback); + gUnknown_0203CF1C->newMove = newMove; } -void sub_81BFA80(u8 a, void *b, u8 c, u8 d, void *e) +void sub_81BFA80(u8 a, struct BoxPokemon *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void)) { - sub_81BF8EC(a, b, c, d, e); - gUnknown_0203CF1C->unk40EF = 1; + sub_81BF8EC(a, mons, monIndex, maxMonIndex, callback); + gUnknown_0203CF1C->unk40EF = TRUE; } void sub_81BFAB4(void) @@ -412,13 +781,9 @@ void sub_81BFAD0(void) TransferPlttBuffer(); } -void sub_81BFAE4() +void sub_81BFAE4(void) { - while (1) - { - if (sub_81221EC() == 1 || sub_81BFB10() == TRUE || sub_81221AC() == 1) - break; - } + while (sub_81221EC() != TRUE && sub_81BFB10() != TRUE && sub_81221AC() != TRUE); } bool8 sub_81BFB10(void) @@ -454,7 +819,7 @@ bool8 sub_81BFB10(void) gMain.state++; break; case 6: - if (sub_81BFEB0() != 0) + if (sub_81BFEB0() != FALSE) gMain.state++; break; case 7: @@ -501,8 +866,8 @@ bool8 sub_81BFB10(void) gMain.state++; break; case 17: - gUnknown_0203CF1C->unk40D3[0] = sub_81C45F4(&gUnknown_0203CF1C->currentMon, &gUnknown_0203CF1C->unk40F0); - if (gUnknown_0203CF1C->unk40D3[0] != 0xFF) + gUnknown_0203CF1C->spriteIds[0] = sub_81C45F4(&gUnknown_0203CF1C->currentMon, &gUnknown_0203CF1C->unk40F0); + if (gUnknown_0203CF1C->spriteIds[0] != 0xFF) { gUnknown_0203CF1C->unk40F0 = 0; gMain.state++; @@ -525,7 +890,7 @@ bool8 sub_81BFB10(void) gMain.state++; break; case 22: - if (gUnknown_0203CF1C->unk40BC != 3) + if (gUnknown_0203CF1C->mode != 3) CreateTask(sub_81C0510, 0); else CreateTask(sub_81C171C, 0); @@ -548,13 +913,13 @@ bool8 sub_81BFB10(void) return FALSE; } -void sub_81BFE24() +void sub_81BFE24(void) { ResetBgsAndClearDma3BusyFlags(0); - InitBgsFromTemplates(0, &gUnknown_0861CBB4, 4); - SetBgTilemapBuffer(1, &gUnknown_0203CF1C->unkTilemap2); - SetBgTilemapBuffer(2, &gUnknown_0203CF1C->unkTilemap1); - SetBgTilemapBuffer(3, &gUnknown_0203CF1C->unkTilemap0); + InitBgsFromTemplates(0, gUnknown_0861CBB4, ARRAY_COUNT(gUnknown_0861CBB4)); + SetBgTilemapBuffer(1, &gUnknown_0203CF1C->bgTilemapBuffer3); + SetBgTilemapBuffer(2, &gUnknown_0203CF1C->bgTilemapBuffer2); + SetBgTilemapBuffer(3, &gUnknown_0203CF1C->bgTilemapBuffer1); ResetAllBgsCoordinates(); schedule_bg_copy_tilemap_to_vram(1); schedule_bg_copy_tilemap_to_vram(2); @@ -567,7 +932,7 @@ void sub_81BFE24() ShowBg(3); } -u8 sub_81BFEB0() +bool8 sub_81BFEB0(void) { switch (gUnknown_0203CF1C->unk40F0) { @@ -579,24 +944,24 @@ u8 sub_81BFEB0() case 1: if (free_temp_tile_data_buffers_if_possible() != 1) { - LZDecompressWram(&gUnknown_08D9862C, gUnknown_0203CF1C->unkTilemap0); + LZDecompressWram(&gUnknown_08D9862C, &gUnknown_0203CF1C->bgTilemapBuffer1[0]); gUnknown_0203CF1C->unk40F0++; } break; case 2: - LZDecompressWram(&gUnknown_08D98CC8, gUnknown_0203CF1C->unkTilemap0_1); + LZDecompressWram(&gUnknown_08D98CC8, &gUnknown_0203CF1C->bgTilemapBuffer1[0x400]); gUnknown_0203CF1C->unk40F0++; break; case 3: - LZDecompressWram(&gUnknown_08D987FC, gUnknown_0203CF1C->unkTilemap1_1); + LZDecompressWram(&gUnknown_08D987FC, &gUnknown_0203CF1C->bgTilemapBuffer2[0x400]); gUnknown_0203CF1C->unk40F0++; break; case 4: - LZDecompressWram(&gUnknown_08D9898C, gUnknown_0203CF1C->unkTilemap2_1); + LZDecompressWram(&gUnknown_08D9898C, &gUnknown_0203CF1C->bgTilemapBuffer3[0x400]); gUnknown_0203CF1C->unk40F0++; break; case 5: - LZDecompressWram(&gUnknown_08D98B28, gUnknown_0203CF1C->unkTilemap3_1); + LZDecompressWram(&gUnknown_08D98B28, &gUnknown_0203CF1C->bgTilemapBuffer4[0x400]); gUnknown_0203CF1C->unk40F0++; break; case 6: @@ -627,22 +992,22 @@ u8 sub_81BFEB0() case 12: LoadCompressedPalette(&gMoveTypes_Pal, 0x1D0, 0x60); gUnknown_0203CF1C->unk40F0 = 0; - return 1; + return TRUE; } - return 0; + return FALSE; } void sub_81C0098(struct Pokemon *mon) { - if (gUnknown_0203CF1C->unk40BD == 0) + if (!gUnknown_0203CF1C->isBoxMon) { - struct Pokemon *partyMon = gUnknown_0203CF1C->unk0->mon; - *mon = partyMon[gUnknown_0203CF1C->unk40BE]; + struct Pokemon *partyMon = gUnknown_0203CF1C->monList.mons; + *mon = partyMon[gUnknown_0203CF1C->curMonIndex]; } else { - struct BoxPokemon *boxMon = gUnknown_0203CF1C->unk0->boxMon; - BoxMonToMon(&boxMon[gUnknown_0203CF1C->unk40BE], mon); + struct BoxPokemon *boxMon = gUnknown_0203CF1C->monList.boxMons; + BoxMonToMon(&boxMon[gUnknown_0203CF1C->curMonIndex], mon); } } @@ -675,7 +1040,7 @@ bool8 sub_81C00F0(struct Pokemon *a) sum->ppBonuses = GetMonData(a, MON_DATA_PP_BONUSES); break; case 2: - if ((struct Pokemon*)gUnknown_0203CF1C->unk0 == gPlayerParty || gUnknown_0203CF1C->unk40BC == 2 || gUnknown_0203CF1C->unk40EF == 1) + if (gUnknown_0203CF1C->monList.mons == gPlayerParty || gUnknown_0203CF1C->mode == 2 || gUnknown_0203CF1C->unk40EF == TRUE) { sum->nature = GetNature(a); sum->currentHP = GetMonData(a, MON_DATA_HP); @@ -726,14 +1091,14 @@ void sub_81C0348(void) } else { - sub_81C240C(gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->unk40C6]); - sub_81C2194(&gUnknown_0203CF1C->unkTilemap2[0], 3, 0); - sub_81C2194(&gUnknown_0203CF1C->unkTilemap3[0], 1, 0); - SetBgTilemapBuffer(1, &gUnknown_0203CF1C->unkTilemap3); - SetBgTilemapBuffer(2, &gUnknown_0203CF1C->unkTilemap2); + sub_81C240C(gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->firstMoveIndex]); + sub_81C2194(&gUnknown_0203CF1C->bgTilemapBuffer3[0], 3, 0); + sub_81C2194(&gUnknown_0203CF1C->bgTilemapBuffer4[0], 1, 0); + SetBgTilemapBuffer(1, &gUnknown_0203CF1C->bgTilemapBuffer4); + SetBgTilemapBuffer(2, &gUnknown_0203CF1C->bgTilemapBuffer3); ChangeBgX(2, 0x10000, 1); - ClearWindowTilemap(0x13); - ClearWindowTilemap(0xD); + ClearWindowTilemap(19); + ClearWindowTilemap(13); } if (gUnknown_0203CF1C->summary.unk7 == 0) { @@ -742,13 +1107,13 @@ void sub_81C0348(void) else { if (gUnknown_0203CF1C->unk40C0 != 2 && gUnknown_0203CF1C->unk40C0 != 3) - PutWindowTilemap(0xD); + PutWindowTilemap(13); } sub_81C2524(); sub_81C2228(&gUnknown_0203CF1C->currentMon); } -void sub_81C0434() +void sub_81C0434(void) { FreeAllWindowBuffers(); Free(gUnknown_0203CF1C); @@ -764,8 +1129,8 @@ void sub_81C0484(u8 taskId) { if (sub_81221EC() != 1 && !gPaletteFade.active) { - SetMainCallback2(gUnknown_0203CF1C->unk4); - gUnknown_0203CF20 = gUnknown_0203CF1C->unk40BE; + SetMainCallback2(gUnknown_0203CF1C->callback); + gUnknown_0203CF20 = gUnknown_0203CF1C->curMonIndex; sub_81C4898(); ResetSpriteData(); FreeAllSpritePalettes(); @@ -828,9 +1193,9 @@ void sub_81C0604(u8 taskId, s8 a) { s8 r4_2; - if (gUnknown_0203CF1C->unk40C3 == 0) + if (!gUnknown_0203CF1C->unk40C3) { - if (gUnknown_0203CF1C->unk40BD == 1) + if (gUnknown_0203CF1C->isBoxMon == TRUE) { if (gUnknown_0203CF1C->unk40C0 != 0) { @@ -846,7 +1211,7 @@ void sub_81C0604(u8 taskId, s8 a) else a = 3; } - r4_2 = sub_80D214C(gUnknown_0203CF1C->unk0, gUnknown_0203CF1C->unk40BE, gUnknown_0203CF1C->unk40BF, a); + r4_2 = sub_80D214C(gUnknown_0203CF1C->monList.boxMons, gUnknown_0203CF1C->curMonIndex, gUnknown_0203CF1C->maxMonIndex, a); } else if (sub_81B1250() == 1) { @@ -867,7 +1232,7 @@ void sub_81C0604(u8 taskId, s8 a) schedule_bg_copy_tilemap_to_vram(0); sub_81C2074(0, 2); } - gUnknown_0203CF1C->unk40BE = r4_2; + gUnknown_0203CF1C->curMonIndex = r4_2; gTasks[taskId].data[0] = 0; gTasks[taskId].func = sub_81C0704; } @@ -885,10 +1250,10 @@ void sub_81C0704(u8 taskId) break; case 1: sub_81C4898(); - DestroySpriteAndFreeResources(&gSprites[gUnknown_0203CF1C->unk40D3[0]]); + DestroySpriteAndFreeResources(&gSprites[gUnknown_0203CF1C->spriteIds[0]]); break; case 2: - DestroySpriteAndFreeResources(&gSprites[gUnknown_0203CF1C->unk40D3[1]]); + DestroySpriteAndFreeResources(&gSprites[gUnknown_0203CF1C->spriteIds[1]]); break; case 3: sub_81C0098(&gUnknown_0203CF1C->currentMon); @@ -911,10 +1276,10 @@ void sub_81C0704(u8 taskId) data[1] = 0; break; case 8: - gUnknown_0203CF1C->unk40D3[0] = sub_81C45F4(&gUnknown_0203CF1C->currentMon, &data[1]); - if (gUnknown_0203CF1C->unk40D3[0] == 0xFF) + gUnknown_0203CF1C->spriteIds[0] = sub_81C45F4(&gUnknown_0203CF1C->currentMon, &data[1]); + if (gUnknown_0203CF1C->spriteIds[0] == 0xFF) return; - gSprites[gUnknown_0203CF1C->unk40D3[0]].data[2] = 1; + gSprites[gUnknown_0203CF1C->spriteIds[0]].data[2] = 1; sub_81C0E24(); data[1] = 0; break; @@ -929,7 +1294,7 @@ void sub_81C0704(u8 taskId) sub_81C2524(); break; case 12: - gSprites[gUnknown_0203CF1C->unk40D3[0]].data[2] = 0; + gSprites[gUnknown_0203CF1C->spriteIds[0]].data[2] = 0; break; default: if (sub_81221EC() == 0 && FuncIsActiveTask(sub_81C20F0) == 0) @@ -944,24 +1309,24 @@ void sub_81C0704(u8 taskId) s8 sub_81C08F8(s8 a) { - struct Pokemon *mon = gUnknown_0203CF1C->unk0->mon; + struct Pokemon *mon = gUnknown_0203CF1C->monList.mons; if (gUnknown_0203CF1C->unk40C0 == 0) { - if (a == -1 && gUnknown_0203CF1C->unk40BE == 0) + if (a == -1 && gUnknown_0203CF1C->curMonIndex == 0) return -1; - if (a == 1 && gUnknown_0203CF1C->unk40BE >= gUnknown_0203CF1C->unk40BF) + if (a == 1 && gUnknown_0203CF1C->curMonIndex >= gUnknown_0203CF1C->maxMonIndex) return -1; - return gUnknown_0203CF1C->unk40BE + a; + return gUnknown_0203CF1C->curMonIndex + a; } else { - s8 index = gUnknown_0203CF1C->unk40BE; + s8 index = gUnknown_0203CF1C->curMonIndex; do { index += a; - if (index < 0 || index > gUnknown_0203CF1C->unk40BF) + if (index < 0 || index > gUnknown_0203CF1C->maxMonIndex) return -1; } while (GetMonData(&mon[index], MON_DATA_IS_EGG) != 0); return index; @@ -970,23 +1335,23 @@ s8 sub_81C08F8(s8 a) s8 sub_81C09B4(s8 a) { - struct Pokemon *mon = gUnknown_0203CF1C->unk0->mon; + struct Pokemon *mon = gUnknown_0203CF1C->monList.mons; s8 r5 = 0; u8 i; for (i = 0; i < 6; i++) { - if (gUnknown_0861CC1C[i] == gUnknown_0203CF1C->unk40BE) + if (gUnknown_0861CC1C[i] == gUnknown_0203CF1C->curMonIndex) { r5 = i; break; } } - while (1) + while (TRUE) { int b; - s8* c = &gUnknown_0861CC1C[0]; + const s8* c = gUnknown_0861CC1C; r5 += a; if (r5 < 0 || r5 >= 6) @@ -1001,7 +1366,7 @@ bool8 sub_81C0A50(struct Pokemon* mon) { if (GetMonData(mon, MON_DATA_SPECIES) == 0) return FALSE; - else if (gUnknown_0203CF1C->unk40BE != 0 || GetMonData(mon, MON_DATA_IS_EGG) == 0) + else if (gUnknown_0203CF1C->curMonIndex != 0 || GetMonData(mon, MON_DATA_IS_EGG) == 0) return TRUE; else return FALSE; @@ -1014,10 +1379,11 @@ void sub_81C0A8C(u8 taskId, s8 b) if (summary->isEgg) return; - if (b == -1 && gUnknown_0203CF1C->unk40C0 == gUnknown_0203CF1C->unk40C1) + else if (b == -1 && gUnknown_0203CF1C->unk40C0 == gUnknown_0203CF1C->unk40C1) return; - if (b == 1 && gUnknown_0203CF1C->unk40C0 == gUnknown_0203CF1C->unk40C2) + else if (b == 1 && gUnknown_0203CF1C->unk40C0 == gUnknown_0203CF1C->unk40C2) return; + PlaySE(SE_SELECT); sub_81C2C38(gUnknown_0203CF1C->unk40C0); gUnknown_0203CF1C->unk40C0 += b; @@ -1122,7 +1488,7 @@ void sub_81C0D44(u8 taskId) SwitchTaskToFollowupFunc(taskId); } -void sub_81C0E24() +void sub_81C0E24(void) { if (gUnknown_0203CF1C->unk40C0 == 1) sub_81C22CC(&gUnknown_0203CF1C->currentMon); @@ -1131,20 +1497,20 @@ void sub_81C0E24() void sub_81C0E48(u8 taskId) { u16 move; - gUnknown_0203CF1C->unk40C6 = 0; - move = gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->unk40C6]; + gUnknown_0203CF1C->firstMoveIndex = 0; + move = gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->firstMoveIndex]; ClearWindowTilemap(0x13); - if (gSprites[gUnknown_0203CF1C->unk40D3[2]].invisible == 0) + if (gSprites[gUnknown_0203CF1C->spriteIds[2]].invisible == 0) ClearWindowTilemap(0xD); sub_81C1DA4(9, -3); sub_81C1EFC(9, -3, move); - if (gUnknown_0203CF1C->unk40C8 == 0) + if (!gUnknown_0203CF1C->unk40C8) { ClearWindowTilemap(5); PutWindowTilemap(6); } - sub_81C2194(&gUnknown_0203CF1C->unkTilemap2[0], 3, 0); - sub_81C2194(&gUnknown_0203CF1C->unkTilemap3[0], 1, 0); + sub_81C2194(&gUnknown_0203CF1C->bgTilemapBuffer3[0], 3, 0); + sub_81C2194(&gUnknown_0203CF1C->bgTilemapBuffer4[0], 1, 0); sub_81C3E9C(move); sub_81C3F44(); sub_81C44F0(); @@ -1165,17 +1531,17 @@ void sub_81C0F44(u8 taskId) if (gMain.newKeys & DPAD_UP) { data[0] = 4; - sub_81C1070(data, -1, &gUnknown_0203CF1C->unk40C6); + sub_81C1070(data, -1, &gUnknown_0203CF1C->firstMoveIndex); } else if (gMain.newKeys & DPAD_DOWN) { data[0] = 4; - sub_81C1070(data, 1, &gUnknown_0203CF1C->unk40C6); + sub_81C1070(data, 1, &gUnknown_0203CF1C->firstMoveIndex); } else if (gMain.newKeys & A_BUTTON) { - if (gUnknown_0203CF1C->unk40C8 == 1 - || (gUnknown_0203CF1C->unk40C4 == 0 && gUnknown_0203CF1C->unk40C6 == 4)) + if (gUnknown_0203CF1C->unk40C8 == TRUE + || (gUnknown_0203CF1C->newMove == MOVE_NONE && gUnknown_0203CF1C->firstMoveIndex == MAX_MON_MOVES)) { PlaySE(SE_SELECT); sub_81C11F4(taskId); @@ -1226,7 +1592,7 @@ void sub_81C1070(s16 *a, s8 b, u8 *c) moveIndex = a[0]; if (moveIndex == 4) { - move = gUnknown_0203CF1C->unk40C4; + move = gUnknown_0203CF1C->newMove; break; } move = gUnknown_0203CF1C->summary.moves[moveIndex]; @@ -1237,16 +1603,16 @@ void sub_81C1070(s16 *a, s8 b, u8 *c) schedule_bg_copy_tilemap_to_vram(1); schedule_bg_copy_tilemap_to_vram(2); sub_81C3E9C(move); - if ((*c == 4 && gUnknown_0203CF1C->unk40C4 == 0) || a[1] == 1) + if ((*c == 4 && gUnknown_0203CF1C->newMove == MOVE_NONE) || a[1] == 1) { ClearWindowTilemap(19); - if (!gSprites[gUnknown_0203CF1C->unk40D3[2]].invisible) + if (!gSprites[gUnknown_0203CF1C->spriteIds[2]].invisible) ClearWindowTilemap(13); schedule_bg_copy_tilemap_to_vram(0); sub_81C1DA4(9, -3); sub_81C1EFC(9, -3, move); } - if (*c != 4 && moveIndex == 4 && gUnknown_0203CF1C->unk40C4 == 0) + if (*c != 4 && moveIndex == 4 && gUnknown_0203CF1C->newMove == MOVE_NONE) { ClearWindowTilemap(14); ClearWindowTilemap(15); @@ -1255,7 +1621,7 @@ void sub_81C1070(s16 *a, s8 b, u8 *c) sub_81C1EFC(0, 3, 0); } *c = moveIndex; - if (c == &gUnknown_0203CF1C->unk40C6) + if (c == &gUnknown_0203CF1C->firstMoveIndex) sub_81C4D18(8); else sub_81C4D18(18); @@ -1267,10 +1633,10 @@ void sub_81C11F4(u8 taskId) ClearWindowTilemap(6); PutWindowTilemap(5); sub_81C3E9C(0); - sub_81C2194(&gUnknown_0203CF1C->unkTilemap2[0], 3, 1); - sub_81C2194(&gUnknown_0203CF1C->unkTilemap3[0], 1, 1); + sub_81C2194(&gUnknown_0203CF1C->bgTilemapBuffer3[0], 3, 1); + sub_81C2194(&gUnknown_0203CF1C->bgTilemapBuffer4[0], 1, 1); sub_81C4064(); - if (gUnknown_0203CF1C->unk40C6 != 4) + if (gUnknown_0203CF1C->firstMoveIndex != MAX_MON_MOVES) { ClearWindowTilemap(14); ClearWindowTilemap(15); @@ -1285,7 +1651,7 @@ void sub_81C11F4(u8 taskId) void sub_81C129C(u8 taskId) { - gUnknown_0203CF1C->unk40C7 = gUnknown_0203CF1C->unk40C6; + gUnknown_0203CF1C->secondMoveIndex = gUnknown_0203CF1C->firstMoveIndex; sub_81C4C84(1); sub_81C4AF8(18); gTasks[taskId].func = sub_81C12E4; @@ -1300,16 +1666,16 @@ void sub_81C12E4(u8 taskId) if (gMain.newKeys & DPAD_UP) { data[0] = 3; - sub_81C1070(&data[0], -1, &gUnknown_0203CF1C->unk40C7); + sub_81C1070(&data[0], -1, &gUnknown_0203CF1C->secondMoveIndex); } else if (gMain.newKeys & DPAD_DOWN) { data[0] = 3; - sub_81C1070(&data[0], 1, &gUnknown_0203CF1C->unk40C7); + sub_81C1070(&data[0], 1, &gUnknown_0203CF1C->secondMoveIndex); } else if (gMain.newKeys & A_BUTTON) { - if (gUnknown_0203CF1C->unk40C6 == gUnknown_0203CF1C->unk40C7) + if (gUnknown_0203CF1C->firstMoveIndex == gUnknown_0203CF1C->secondMoveIndex) { sub_81C13B0(taskId, 0); } @@ -1329,22 +1695,22 @@ void sub_81C13B0(u8 taskId, u8 b) sub_81C4C60(18); if (b == 1) { - if (gUnknown_0203CF1C->unk40BD == 0) + if (!gUnknown_0203CF1C->isBoxMon) { - struct Pokemon *why = gUnknown_0203CF1C->unk0->mon; - sub_81C14BC(&why[gUnknown_0203CF1C->unk40BE], gUnknown_0203CF1C->unk40C6, gUnknown_0203CF1C->unk40C7); + struct Pokemon *why = gUnknown_0203CF1C->monList.mons; + sub_81C14BC(&why[gUnknown_0203CF1C->curMonIndex], gUnknown_0203CF1C->firstMoveIndex, gUnknown_0203CF1C->secondMoveIndex); } else { - struct BoxPokemon *why = gUnknown_0203CF1C->unk0->boxMon; - sub_81C15EC(&why[gUnknown_0203CF1C->unk40BE], gUnknown_0203CF1C->unk40C6, gUnknown_0203CF1C->unk40C7); + struct BoxPokemon *why = gUnknown_0203CF1C->monList.boxMons; + sub_81C15EC(&why[gUnknown_0203CF1C->curMonIndex], gUnknown_0203CF1C->firstMoveIndex, gUnknown_0203CF1C->secondMoveIndex); } sub_81C0098(&gUnknown_0203CF1C->currentMon); - sub_81C40A0(gUnknown_0203CF1C->unk40C6, gUnknown_0203CF1C->unk40C7); - sub_81C4568(gUnknown_0203CF1C->unk40C6, gUnknown_0203CF1C->unk40C7); - gUnknown_0203CF1C->unk40C6 = gUnknown_0203CF1C->unk40C7; + sub_81C40A0(gUnknown_0203CF1C->firstMoveIndex, gUnknown_0203CF1C->secondMoveIndex); + sub_81C4568(gUnknown_0203CF1C->firstMoveIndex, gUnknown_0203CF1C->secondMoveIndex); + gUnknown_0203CF1C->firstMoveIndex = gUnknown_0203CF1C->secondMoveIndex; } - move = gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->unk40C6]; + move = gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->firstMoveIndex]; sub_81C3E9C(move); sub_81C240C(move); schedule_bg_copy_tilemap_to_vram(1); @@ -1793,12 +2159,12 @@ void sub_81C174C(u8 taskId) if (gMain.newKeys & DPAD_UP) { data[0] = 4; - sub_81C1070(data, -1, &gUnknown_0203CF1C->unk40C6); + sub_81C1070(data, -1, &gUnknown_0203CF1C->firstMoveIndex); } else if (gMain.newKeys & DPAD_DOWN) { data[0] = 4; - sub_81C1070(data, 1, &gUnknown_0203CF1C->unk40C6); + sub_81C1070(data, 1, &gUnknown_0203CF1C->firstMoveIndex); } else if (gMain.newKeys & DPAD_LEFT || GetLRKeysState() == 1) { @@ -1814,7 +2180,7 @@ void sub_81C174C(u8 taskId) { sub_81C48F0(); PlaySE(SE_SELECT); - gUnknown_0203CF21 = gUnknown_0203CF1C->unk40C6; + gUnknown_0203CF21 = gUnknown_0203CF1C->firstMoveIndex; gSpecialVar_0x8005 = gUnknown_0203CF21; sub_81C044C(taskId); } @@ -1837,9 +2203,9 @@ void sub_81C174C(u8 taskId) } } -bool8 sub_81C18A8() +bool8 sub_81C18A8(void) { - if (gUnknown_0203CF1C->unk40C6 == 4 || gUnknown_0203CF1C->unk40C4 == 0 || sub_81B6D14(gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->unk40C6]) != 1) + if (gUnknown_0203CF1C->firstMoveIndex == MAX_MON_MOVES || gUnknown_0203CF1C->newMove == MOVE_NONE || sub_81B6D14(gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->firstMoveIndex]) != 1) return TRUE; else return FALSE; @@ -1866,7 +2232,7 @@ void sub_81C1940(u8 taskId) { data[1] = 1; data[0] = 4; - sub_81C1070(&data[0], -1, &gUnknown_0203CF1C->unk40C6); + sub_81C1070(&data[0], -1, &gUnknown_0203CF1C->firstMoveIndex); data[1] = 0; gTasks[taskId].func = sub_81C174C; } @@ -1874,7 +2240,7 @@ void sub_81C1940(u8 taskId) { data[1] = 1; data[0] = 4; - sub_81C1070(&data[0], 1, &gUnknown_0203CF1C->unk40C6); + sub_81C1070(&data[0], 1, &gUnknown_0203CF1C->firstMoveIndex); data[1] = 0; gTasks[taskId].func = sub_81C174C; } @@ -1882,11 +2248,10 @@ void sub_81C1940(u8 taskId) { if (gUnknown_0203CF1C->unk40C0 != 2) { - ClearWindowTilemap(19); - if (!gSprites[gUnknown_0203CF1C->unk40D3[2]].invisible) + if (!gSprites[gUnknown_0203CF1C->spriteIds[2]].invisible) ClearWindowTilemap(13); - move = gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->unk40C6]; + move = gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->firstMoveIndex]; gTasks[taskId].func = sub_81C174C; sub_81C0A8C(taskId, -1); sub_81C1DA4(9, -2); @@ -1898,9 +2263,9 @@ void sub_81C1940(u8 taskId) if (gUnknown_0203CF1C->unk40C0 != 3) { ClearWindowTilemap(19); - if (!gSprites[gUnknown_0203CF1C->unk40D3[2]].invisible) + if (!gSprites[gUnknown_0203CF1C->spriteIds[2]].invisible) ClearWindowTilemap(13); - move = gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->unk40C6]; + move = gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->firstMoveIndex]; gTasks[taskId].func = sub_81C174C; sub_81C0A8C(taskId, 1); sub_81C1DA4(9, -2); @@ -1910,9 +2275,9 @@ void sub_81C1940(u8 taskId) else if (gMain.newKeys & (A_BUTTON | B_BUTTON)) { ClearWindowTilemap(19); - if (!gSprites[gUnknown_0203CF1C->unk40D3[2]].invisible) + if (!gSprites[gUnknown_0203CF1C->spriteIds[2]].invisible) ClearWindowTilemap(13); - move = gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->unk40C6]; + move = gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->firstMoveIndex]; sub_81C3E9C(move); schedule_bg_copy_tilemap_to_vram(0); sub_81C1DA4(9, -3); @@ -1922,12 +2287,12 @@ void sub_81C1940(u8 taskId) } } -u8 sub_81C1B94() +u8 sub_81C1B94(void) { return gUnknown_0203CF21; } -void sub_81C1BA0() +void sub_81C1BA0(void) { u16 *alloced = Alloc(32); u8 i; @@ -1992,173 +2357,34 @@ void sub_81C1BA0() Free(alloced); } -struct UnkStruct_61CC04 -{ - u8 *ptr; - u8 field_4; - u8 field_5; - u8 field_6; - u8 field_7; - u8 field_8; - u8 field_9; -}; - -#ifdef NONMATCHING -void sub_81C1CB0(struct UnkStruct_61CC04 *a, u16 *b, u8 c, u8 d) +void sub_81C1CB0(const struct UnkStruct_61CC04 *unkStruct, u16 *dest, u8 c, bool8 d) { - u8 *alloced = Alloc(a->field_6 * (a->field_7 << 1)); - CpuFill16(a->field_4, alloced, a->field_7*a->field_6); - if (a->field_6 != c) + u16 i; + u16 *alloced = Alloc(unkStruct->field_6 * 2 * unkStruct->field_7); + CpuFill16(unkStruct->field_4, alloced, unkStruct->field_6 * 2 * unkStruct->field_7); + if (unkStruct->field_6 != c) { if (!d) { - for (d;d < a->field_7; d++) + for (i = 0; i < unkStruct->field_7; i++) { - CpuCopy16(&a->ptr + ((c + a->field_6*d)), alloced + ((a->field_6*d) << 1), (a->field_6 - c) * 2); + CpuCopy16(&unkStruct->ptr[c + unkStruct->field_6 * i], &alloced[unkStruct->field_6 * i], (unkStruct->field_6 - c) * 2); } } else { - for (d = 0;d < a->field_7; d++) + for (i = 0; i < unkStruct->field_7; i++) { - CpuCopy16(&a->ptr + (a->field_6*d), alloced + ((c + a->field_6*d) << 1), (a->field_6 - c) * 2); + CpuCopy16(&unkStruct->ptr[unkStruct->field_6 * i], &alloced[c + unkStruct->field_6 * i], (unkStruct->field_6 - c) * 2); } } } - d = 0; - while (d < a->field_7) + for (i = 0; i < unkStruct->field_7; i++) { - CpuCopy16(alloced + ((a->field_6*d) << 1), b + ((((a->field_9 + d) << 5) + a->field_8) << 1), a->field_6 * 2); - d++; + CpuCopy16(&alloced[unkStruct->field_6 * i], &dest[(unkStruct->field_9 + i) * 32 + unkStruct->field_8], unkStruct->field_6 * 2); } Free(alloced); } -#else -NAKED -void sub_81C1CB0(struct UnkStruct_61CC04 *a, u16 *b, u8 c, u8 d) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r8\n\ - push {r7}\n\ - sub sp, 0x4\n\ - adds r4, r0, 0\n\ - mov r8, r1\n\ - lsls r2, 24\n\ - lsrs r6, r2, 24\n\ - lsls r3, 24\n\ - lsrs r5, r3, 24\n\ - ldrb r1, [r4, 0x6]\n\ - ldrb r0, [r4, 0x7]\n\ - lsls r0, 1\n\ - muls r0, r1\n\ - bl Alloc\n\ - adds r7, r0, 0\n\ - mov r1, sp\n\ - ldrh r0, [r4, 0x4]\n\ - strh r0, [r1]\n\ - ldrb r1, [r4, 0x7]\n\ - ldrb r0, [r4, 0x6]\n\ - adds r2, r1, 0\n\ - muls r2, r0\n\ - movs r0, 0x80\n\ - lsls r0, 17\n\ - orrs r2, r0\n\ - mov r0, sp\n\ - adds r1, r7, 0\n\ - bl CpuSet\n\ - ldrb r0, [r4, 0x6]\n\ - cmp r0, r6\n\ - beq _081C1D60\n\ - cmp r5, 0\n\ - bne _081C1D30\n\ - movs r5, 0\n\ - ldrb r0, [r4, 0x7]\n\ - cmp r5, r0\n\ - bcs _081C1D60\n\ -_081C1D00:\n\ - ldrb r2, [r4, 0x6]\n\ - adds r1, r2, 0\n\ - muls r1, r5\n\ - adds r3, r6, r1\n\ - lsls r3, 1\n\ - ldr r0, [r4]\n\ - adds r0, r3\n\ - lsls r1, 1\n\ - adds r1, r7, r1\n\ - subs r2, r6\n\ - ldr r3, =0x001fffff\n\ - ands r2, r3\n\ - bl CpuSet\n\ - adds r0, r5, 0x1\n\ - lsls r0, 16\n\ - lsrs r5, r0, 16\n\ - ldrb r3, [r4, 0x7]\n\ - cmp r5, r3\n\ - bcc _081C1D00\n\ - b _081C1D60\n\ - .pool\n\ -_081C1D30:\n\ - movs r5, 0\n\ - ldrb r0, [r4, 0x7]\n\ - cmp r5, r0\n\ - bcs _081C1D60\n\ -_081C1D38:\n\ - ldrb r2, [r4, 0x6]\n\ - adds r1, r2, 0\n\ - muls r1, r5\n\ - lsls r3, r1, 1\n\ - ldr r0, [r4]\n\ - adds r0, r3\n\ - adds r1, r6, r1\n\ - lsls r1, 1\n\ - adds r1, r7, r1\n\ - subs r2, r6\n\ - ldr r3, =0x001fffff\n\ - ands r2, r3\n\ - bl CpuSet\n\ - adds r0, r5, 0x1\n\ - lsls r0, 16\n\ - lsrs r5, r0, 16\n\ - ldrb r3, [r4, 0x7]\n\ - cmp r5, r3\n\ - bcc _081C1D38\n\ -_081C1D60:\n\ - movs r5, 0\n\ - b _081C1D8A\n\ - .pool\n\ -_081C1D68:\n\ - ldrb r2, [r4, 0x6]\n\ - adds r0, r2, 0\n\ - muls r0, r5\n\ - lsls r0, 1\n\ - adds r0, r7, r0\n\ - ldrb r1, [r4, 0x9]\n\ - adds r1, r5\n\ - lsls r1, 5\n\ - ldrb r3, [r4, 0x8]\n\ - adds r1, r3\n\ - lsls r1, 1\n\ - add r1, r8\n\ - bl CpuSet\n\ - adds r0, r5, 0x1\n\ - lsls r0, 16\n\ - lsrs r5, r0, 16\n\ -_081C1D8A:\n\ - ldrb r0, [r4, 0x7]\n\ - cmp r5, r0\n\ - bcc _081C1D68\n\ - adds r0, r7, 0\n\ - bl Free\n\ - add sp, 0x4\n\ - pop {r3}\n\ - mov r8, r3\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .syntax divided\n"); -} -#endif void sub_81C1DA4(u16 a, s16 b) { @@ -2166,7 +2392,7 @@ void sub_81C1DA4(u16 a, s16 b) b = gUnknown_0861CC04.field_6; if (b == 0 || b == gUnknown_0861CC04.field_6) { - sub_81C1CB0(&gUnknown_0861CC04, &gUnknown_0203CF1C->unkTilemap2[0], b, 1); + sub_81C1CB0(&gUnknown_0861CC04, &gUnknown_0203CF1C->bgTilemapBuffer3[0], b, 1); } else { @@ -2192,18 +2418,17 @@ void sub_81C1E20(u8 taskId) { data[1] = gUnknown_0861CC04.field_6; } - sub_81C1CB0(&gUnknown_0861CC04, &gUnknown_0203CF1C->unkTilemap2[0], data[1], 1); + sub_81C1CB0(&gUnknown_0861CC04, &gUnknown_0203CF1C->bgTilemapBuffer3[0], data[1], 1); if (data[1] <= 0 || data[1] >= gUnknown_0861CC04.field_6) { if (data[0] < 0) { if (gUnknown_0203CF1C->unk40C0 == 2) PutWindowTilemap(14); - } else { - if (!gSprites[gUnknown_0203CF1C->unk40D3[2]].invisible) + if (!gSprites[gUnknown_0203CF1C->spriteIds[2]].invisible) PutWindowTilemap(13); PutWindowTilemap(19); } @@ -2219,7 +2444,7 @@ void sub_81C1EFC(u16 a, s16 b, u16 move) if (b > gUnknown_0861CC10.field_6) b = gUnknown_0861CC10.field_6; if (b == 0 || b == gUnknown_0861CC10.field_6) - sub_81C1CB0(&gUnknown_0861CC10, &gUnknown_0203CF1C->unkTilemap3[0], b, 1); + sub_81C1CB0(&gUnknown_0861CC10, &gUnknown_0203CF1C->bgTilemapBuffer4[0], b, 1); else { u8 taskId = FindTaskIdByFunc(sub_81C1F80); @@ -2243,7 +2468,7 @@ void sub_81C1F80(u8 taskId) { data[1] = gUnknown_0861CC10.field_6; } - sub_81C1CB0(&gUnknown_0861CC10, &gUnknown_0203CF1C->unkTilemap3[0], data[1], 1); + sub_81C1CB0(&gUnknown_0861CC10, &gUnknown_0203CF1C->bgTilemapBuffer4[0], data[1], 1); if (data[1] <= 0 || data[1] >= gUnknown_0861CC10.field_6) { if (data[0] < 0) @@ -2254,7 +2479,7 @@ void sub_81C1F80(u8 taskId) } else { - if (!gSprites[gUnknown_0203CF1C->unk40D3[2]].invisible) + if (!gSprites[gUnknown_0203CF1C->spriteIds[2]].invisible) { PutWindowTilemap(13); } @@ -2273,8 +2498,8 @@ void sub_81C2074(u16 a, s16 b) b = gUnknown_0861CBEC.field_6; if (b == 0 || b == gUnknown_0861CBEC.field_6) { - sub_81C1CB0(&gUnknown_0861CBEC, &gUnknown_0203CF1C->unkTilemap0[0], b, 0); - sub_81C1CB0(&gUnknown_0861CBF8, &gUnknown_0203CF1C->unkTilemap0[0], b, 0); + sub_81C1CB0(&gUnknown_0861CBEC, &gUnknown_0203CF1C->bgTilemapBuffer1[0], b, 0); + sub_81C1CB0(&gUnknown_0861CBF8, &gUnknown_0203CF1C->bgTilemapBuffer1[0], b, 0); } else { @@ -2292,8 +2517,8 @@ void sub_81C20F0(u8 taskId) data[1] = 0; else if (data[1] > gUnknown_0861CBEC.field_6) data[1] = gUnknown_0861CBEC.field_6; - sub_81C1CB0(&gUnknown_0861CBEC, &gUnknown_0203CF1C->unkTilemap0[0], data[1], 0); - sub_81C1CB0(&gUnknown_0861CBF8, &gUnknown_0203CF1C->unkTilemap0[0], data[1], 0); + sub_81C1CB0(&gUnknown_0861CBEC, &gUnknown_0203CF1C->bgTilemapBuffer1[0], data[1], 0); + sub_81C1CB0(&gUnknown_0861CBF8, &gUnknown_0203CF1C->bgTilemapBuffer1[0], data[1], 0); schedule_bg_copy_tilemap_to_vram(3); if (data[1] <= 0 || data[1] >= gUnknown_0861CBEC.field_6) { @@ -2307,126 +2532,44 @@ void sub_81C20F0(u8 taskId) } } -// somebody send help this is a complete fucking mess -#ifdef NONMATCHING -void sub_81C2194(u16 *a, u16 b, u8 c) +void sub_81C2194(u16 *output, u16 palette, bool8 c) { u16 i; - int var; - b *= 0x1000; + u32 var; + palette <<= 12; var = 0x56A; if (c == 0) { for (i = 0; i < 20; i++) { - a[(i + var) << 1] = gSummaryScreenWindow_Tilemap[i] + b; - a[((i + var) << 1) + 0x40] = gSummaryScreenWindow_Tilemap[i] + b; - a[((i + var) << 1) + 0x80] = gSummaryScreenWindow_Tilemap[i + 20] + b; + output[var + i] = gSummaryScreenWindow_Tilemap[i] + palette; + output[var + i + 0x20] = gSummaryScreenWindow_Tilemap[i] + palette; + output[var + i + 0x40] = gSummaryScreenWindow_Tilemap[i + 20] + palette; } } else { for (i = 0; i < 20; i++) { - a[(i + var)] = gSummaryScreenWindow_Tilemap[i + 20] + b; - a[((i + var)) + 0x40] = gSummaryScreenWindow_Tilemap[i + 40] + b; - a[((i + var)) + 0x80] = gSummaryScreenWindow_Tilemap[i + 40] + b; + output[var + i] = gSummaryScreenWindow_Tilemap[i + 20] + palette; + output[var + i + 0x20] = gSummaryScreenWindow_Tilemap[i + 40] + palette; + output[var + i + 0x40] = gSummaryScreenWindow_Tilemap[i + 40] + palette; } } } -#else -NAKED -void sub_81C2194(u16 *a, u16 b, u8 c) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - adds r6, r0, 0\n\ - lsls r2, 24\n\ - lsls r1, 28\n\ - lsrs r4, r1, 16\n\ - ldr r7, =0x0000056a\n\ - cmp r2, 0\n\ - bne _081C21E4\n\ - movs r3, 0\n\ - ldr r5, =gSummaryScreenWindow_Tilemap\n\ -_081C21A8:\n\ - adds r2, r7, r3\n\ - lsls r2, 1\n\ - adds r2, r6\n\ - lsls r0, r3, 1\n\ - adds r0, r5\n\ - ldrh r1, [r0]\n\ - adds r1, r4, r1\n\ - strh r1, [r2]\n\ - adds r0, r2, 0\n\ - adds r0, 0x40\n\ - strh r1, [r0]\n\ - adds r2, 0x80\n\ - adds r0, r3, 0\n\ - adds r0, 0x14\n\ - lsls r0, 1\n\ - adds r0, r5\n\ - ldrh r0, [r0]\n\ - adds r0, r4, r0\n\ - strh r0, [r2]\n\ - adds r0, r3, 0x1\n\ - lsls r0, 16\n\ - lsrs r3, r0, 16\n\ - cmp r3, 0x13\n\ - bls _081C21A8\n\ - b _081C221C\n\ - .pool\n\ -_081C21E4:\n\ - movs r3, 0\n\ - ldr r5, =gSummaryScreenWindow_Tilemap\n\ -_081C21E8:\n\ - adds r1, r7, r3\n\ - lsls r1, 1\n\ - adds r1, r6\n\ - adds r0, r3, 0\n\ - adds r0, 0x14\n\ - lsls r0, 1\n\ - adds r0, r5\n\ - ldrh r0, [r0]\n\ - adds r0, r4, r0\n\ - strh r0, [r1]\n\ - adds r2, r1, 0\n\ - adds r2, 0x40\n\ - adds r0, r3, 0\n\ - adds r0, 0x28\n\ - lsls r0, 1\n\ - adds r0, r5\n\ - ldrh r0, [r0]\n\ - adds r0, r4, r0\n\ - strh r0, [r2]\n\ - adds r1, 0x80\n\ - strh r0, [r1]\n\ - adds r0, r3, 0x1\n\ - lsls r0, 16\n\ - lsrs r3, r0, 16\n\ - cmp r3, 0x13\n\ - bls _081C21E8\n\ -_081C221C:\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .pool\n\ - .syntax divided\n"); -} -#endif - -void sub_81C2228(struct Pokemon *mon) + +void sub_81C2228(struct Pokemon *mon) { if (!CheckPartyPokerus(mon, 0) && CheckPartyHasHadPokerus(mon, 0)) { - gUnknown_0203CF1C->unkTilemap0[0x223] = 0x2C; - gUnknown_0203CF1C->unkTilemap0_1[0x223] = 0x2C; + gUnknown_0203CF1C->bgTilemapBuffer1[0x223] = 0x2C; + gUnknown_0203CF1C->bgTilemapBuffer1[0x623] = 0x2C; } else { - gUnknown_0203CF1C->unkTilemap0[0x223] = 0x81A; - gUnknown_0203CF1C->unkTilemap0_1[0x223] = 0x81A; + gUnknown_0203CF1C->bgTilemapBuffer1[0x223] = 0x81A; + gUnknown_0203CF1C->bgTilemapBuffer1[0x623] = 0x81A; } schedule_bg_copy_tilemap_to_vram(3); } @@ -2461,7 +2604,7 @@ void sub_81C22CC(struct Pokemon *unused) r6r7 = 0; } - r9 = &gUnknown_0203CF1C->unkTilemap1_1[0x255]; + r9 = &gUnknown_0203CF1C->bgTilemapBuffer2[0x655]; for (i = 0; i < 8; i++) { if (r6r7 > 7) @@ -2473,7 +2616,7 @@ void sub_81C22CC(struct Pokemon *unused) r6r7 = 0; } - if (GetBgTilemapBuffer(1) == gUnknown_0203CF1C->unkTilemap1) + if (GetBgTilemapBuffer(1) == gUnknown_0203CF1C->bgTilemapBuffer2) schedule_bg_copy_tilemap_to_vram(1); else schedule_bg_copy_tilemap_to_vram(2); @@ -2481,7 +2624,7 @@ void sub_81C22CC(struct Pokemon *unused) void sub_81C240C(u16 move) { - u16* r5 = &gUnknown_0203CF1C->unkTilemap3_1[0]; + u16* r5 = &gUnknown_0203CF1C->bgTilemapBuffer4[0x400]; u8 i; u8 r4; if (move != MOVE_NONE) @@ -2513,7 +2656,7 @@ void sub_81C240C(u16 move) } } -void sub_81C2524() +void sub_81C2524(void) { if (gUnknown_0203CF1C->summary.isEgg != 0) ChangeBgX(3, 0x10000, 0); @@ -2521,23 +2664,23 @@ void sub_81C2524() ChangeBgX(3, 0, 0); } -void sub_81C2554() +void sub_81C2554(void) { u8 i; - InitWindows(&gUnknown_0861CC24); + InitWindows(gUnknown_0861CC24); DeactivateAllTextPrinters(); for (i = 0; i < 20; i++) FillWindowPixelBuffer(i, 0); for (i = 0; i < 8; i++) - gUnknown_0203CF1C->unk40CB[i] |= 0xFF; + gUnknown_0203CF1C->windowIds[i] |= 0xFF; } void sub_81C25A4(u8 a, const u8 *b, u8 c, u8 d, u8 e, u8 f) { - AddTextPrinterParameterized2(a, 1, c, d, 0, e, gUnknown_0861CD2C[f], 0, b); + AddTextPrinterParameterized2(a, 1, c, d, 0, e, sTextColors_861CD2C[f], 0, b); } -void sub_81C25E8() +void sub_81C25E8(void) { FillWindowPixelBuffer(17, 0); FillWindowPixelBuffer(18, 0); @@ -2549,7 +2692,7 @@ void sub_81C25E8() schedule_bg_copy_tilemap_to_vram(0); } -void sub_81C2628() +void sub_81C2628(void) { u8 strArray[16]; struct Pokemon *mon = &gUnknown_0203CF1C->currentMon; @@ -2594,7 +2737,7 @@ void sub_81C2628() PutWindowTilemap(19); } -void sub_81C2794() +void sub_81C2794(void) { GetMonNickname(&gUnknown_0203CF1C->currentMon, gStringVar1); sub_81C25A4(18, gStringVar1, 0, 1, 0, 1); @@ -2625,7 +2768,7 @@ void sub_81C2838(u8 a, bool8 b, u32 c) BlitBitmapToWindow(a, (b) ? &gUnknown_0861CDD3[0] : &gUnknown_0861CDD3[0] - 0x80, c, 0, 16, 16); } -void sub_81C286C() +void sub_81C286C(void) { int r4; int r2; @@ -2705,9 +2848,9 @@ void sub_81C2AFC(u8 a) break; case 2: PutWindowTilemap(2); - if (gUnknown_0203CF1C->unk40BC == 3) + if (gUnknown_0203CF1C->mode == 3) { - if(!(gUnknown_0203CF1C->unk40C4 == 0 && gUnknown_0203CF1C->unk40C6 == 4)) + if(!(gUnknown_0203CF1C->newMove == MOVE_NONE && gUnknown_0203CF1C->firstMoveIndex == MAX_MON_MOVES)) PutWindowTilemap(14); } else @@ -2715,9 +2858,9 @@ void sub_81C2AFC(u8 a) break; case 3: PutWindowTilemap(3); - if (gUnknown_0203CF1C->unk40BC == 3) + if (gUnknown_0203CF1C->mode == 3) { - if(!(gUnknown_0203CF1C->unk40C4 == 0 && gUnknown_0203CF1C->unk40C6 == 4)) + if(!(gUnknown_0203CF1C->newMove == MOVE_NONE && gUnknown_0203CF1C->firstMoveIndex == MAX_MON_MOVES)) PutWindowTilemap(15); } else @@ -2726,7 +2869,7 @@ void sub_81C2AFC(u8 a) } for (i = 0; i < 8; i++) { - PutWindowTilemap(gUnknown_0203CF1C->unk40CB[i]); + PutWindowTilemap(gUnknown_0203CF1C->windowIds[i]); } schedule_bg_copy_tilemap_to_vram(0); } @@ -2748,18 +2891,18 @@ void sub_81C2C38(u8 a) ClearWindowTilemap(12); break; case 2: - if (gUnknown_0203CF1C->unk40BC == 3) + if (gUnknown_0203CF1C->mode == 3) { - if(!(gUnknown_0203CF1C->unk40C4 == 0 && gUnknown_0203CF1C->unk40C6 == 4)) + if(!(gUnknown_0203CF1C->newMove == MOVE_NONE && gUnknown_0203CF1C->firstMoveIndex == MAX_MON_MOVES)) ClearWindowTilemap(14); } else ClearWindowTilemap(5); break; case 3: - if (gUnknown_0203CF1C->unk40BC == 3) + if (gUnknown_0203CF1C->mode == 3) { - if(!(gUnknown_0203CF1C->unk40C4 == 0 && gUnknown_0203CF1C->unk40C6 == 4)) + if(!(gUnknown_0203CF1C->newMove == MOVE_NONE && gUnknown_0203CF1C->firstMoveIndex == MAX_MON_MOVES)) ClearWindowTilemap(15); } else @@ -2771,9 +2914,9 @@ void sub_81C2C38(u8 a) schedule_bg_copy_tilemap_to_vram(0); } -u8 sub_81C2D2C(struct WindowTemplate *template, u8 a) +u8 sub_81C2D2C(const struct WindowTemplate *template, u8 a) { - u8 *windowIdPtr = &(gUnknown_0203CF1C->unk40CB[a]); + u8 *windowIdPtr = &(gUnknown_0203CF1C->windowIds[a]); if (*windowIdPtr == 0xFF) { *windowIdPtr = AddWindow(&template[a]); @@ -2784,7 +2927,7 @@ u8 sub_81C2D2C(struct WindowTemplate *template, u8 a) void sub_81C2D68(u8 a) { - u8 *windowIdPtr = &(gUnknown_0203CF1C->unk40CB[a]); + u8 *windowIdPtr = &(gUnknown_0203CF1C->windowIds[a]); if (*windowIdPtr != 0xFF) { ClearWindowTilemap(*windowIdPtr); @@ -2798,8 +2941,8 @@ void sub_81C2D9C(u8 a) u16 i; for (i = 0; i < 8; i++) { - if (gUnknown_0203CF1C->unk40CB[i] != 0xFF) - FillWindowPixelBuffer(gUnknown_0203CF1C->unk40CB[i], 0); + if (gUnknown_0203CF1C->windowIds[i] != 0xFF) + FillWindowPixelBuffer(gUnknown_0203CF1C->windowIds[i], 0); } gUnknown_0861CE54[a](); } @@ -2809,7 +2952,7 @@ void sub_81C2DE4(u8 a) CreateTask(gUnknown_0861CE64[a], 16); } -void sub_81C2E00() +void sub_81C2E00(void) { if (gUnknown_0203CF1C->summary.isEgg) { @@ -2860,13 +3003,13 @@ void sub_81C2E40(u8 taskId) data[0]++; } -void sub_81C2EC4() +void sub_81C2EC4(void) { u8 r5; int r2; if (sub_81A6BF4() != 1 && sub_81B9E94() != 1) { - r5 = sub_81C2D2C(&gUnknown_0861CCCC, 0); + r5 = sub_81C2D2C(gUnknown_0861CCCC, 0); sub_81C25A4(r5, gText_OTSlash, 0, 1, 0, 1); r2 = GetStringWidth(1, gText_OTSlash, 0); if (gUnknown_0203CF1C->summary.OTGender == 0) @@ -2876,33 +3019,33 @@ void sub_81C2EC4() } } -void sub_81C2F5C() +void sub_81C2F5C(void) { int r4; if (sub_81A6BF4() != TRUE && sub_81B9E94() != TRUE) { ConvertIntToDecimalStringN(StringCopy(gStringVar1, gText_UnkCtrlF907F908), (u16)gUnknown_0203CF1C->summary.OTID, 2, 5); r4 = GetStringRightAlignXOffset(1, gStringVar1, 0x38); - sub_81C25A4(sub_81C2D2C(&gUnknown_0861CCCC, 1), gStringVar1, r4, 1, 0, 1); + sub_81C25A4(sub_81C2D2C(gUnknown_0861CCCC, 1), gStringVar1, r4, 1, 0, 1); } } -void sub_81C2FD8() +void sub_81C2FD8(void) { u8 ability = GetAbilityBySpecies(gUnknown_0203CF1C->summary.species, gUnknown_0203CF1C->summary.altAbility); - sub_81C25A4(sub_81C2D2C(&gUnknown_0861CCCC, 2), gAbilityNames[ability], 0, 1, 0, 1); + sub_81C25A4(sub_81C2D2C(gUnknown_0861CCCC, 2), gAbilityNames[ability], 0, 1, 0, 1); } -void sub_81C302C() +void sub_81C302C(void) { u8 ability = GetAbilityBySpecies(gUnknown_0203CF1C->summary.species, gUnknown_0203CF1C->summary.altAbility); - sub_81C25A4(sub_81C2D2C(&gUnknown_0861CCCC, 2), gAbilityDescriptionPointers[ability], 0, 17, 0, 0); + sub_81C25A4(sub_81C2D2C(gUnknown_0861CCCC, 2), gAbilityDescriptionPointers[ability], 0, 17, 0, 0); } -void sub_81C307C() +void sub_81C307C(void) { struct PokeSummary *sum = &gUnknown_0203CF1C->summary; - u8 *text; + const u8 *text; DynamicPlaceholderTextUtil_Reset(); DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gUnknown_0861CE74); DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gUnknown_0861CE7B); @@ -2938,12 +3081,12 @@ void sub_81C307C() } } -void sub_81C3194() +void sub_81C3194(void) { - sub_81C25A4(sub_81C2D2C(&gUnknown_0861CCCC, 3), gStringVar4, 0, 1, 0, 0); + sub_81C25A4(sub_81C2D2C(gUnknown_0861CCCC, 3), gStringVar4, 0, 1, 0, 0); } -void sub_81C31C0() +void sub_81C31C0(void) { struct UnkSummaryStruct *sumStruct = gUnknown_0203CF1C; DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, gNatureNamePointers[sumStruct->summary.nature]); @@ -2959,14 +3102,15 @@ void sub_81C31F0(u8 *a) DynamicPlaceholderTextUtil_SetPlaceholderPtr(3, a); } -u8 sub_81C3220() +u8 sub_81C3220(void) { struct PokeSummary *sum = &gUnknown_0203CF1C->summary; u32 r4; u8 r5; - if (gUnknown_0203CF1C->unk0 == (union UnkUnion *)&gEnemyParty) + + if (gUnknown_0203CF1C->monList.mons == gEnemyParty) { - u8 multiID = GetMultiplayerId()^1; + u8 multiID = GetMultiplayerId() ^ 1; r4 = (u16)gLinkPlayers[multiID].trainerId; r5 = gLinkPlayers[multiID].gender; StringCopy(gStringVar1, gLinkPlayers[multiID].name); @@ -2984,7 +3128,7 @@ u8 sub_81C3220() return 1; } -bool8 sub_81C32BC() +bool8 sub_81C32BC(void) { struct PokeSummary *sum = &gUnknown_0203CF1C->summary; u8 r0 = sum->metGame - 1; @@ -2993,7 +3137,7 @@ bool8 sub_81C32BC() return FALSE; } -bool8 sub_81C32E0() +bool8 sub_81C32E0(void) { struct PokeSummary *sum = &gUnknown_0203CF1C->summary; u8 r0 = sum->metGame - 1; @@ -3002,91 +3146,36 @@ bool8 sub_81C32E0() return FALSE; } -bool8 sub_81C3304() +bool8 sub_81C3304(void) { if ((gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) && gMain.inBattle) { - if (gUnknown_0203CF1C->unk40BE == 1 || gUnknown_0203CF1C->unk40BE == 4 || gUnknown_0203CF1C->unk40BE == 5) + if (gUnknown_0203CF1C->curMonIndex == 1 || gUnknown_0203CF1C->curMonIndex == 4 || gUnknown_0203CF1C->curMonIndex == 5) return TRUE; } return FALSE; } -#ifdef NONMATCHING -void sub_81C335C() +void sub_81C335C(void) { - u8 r4 = sub_81C2D2C(&gUnknown_0861CCCC, 0); - u32 r5 = GetStringWidth(1, gText_OTSlash, 0); - sub_81C25A4(r4, gText_OTSlash, 0, 1, 0, 1); - sub_81C25A4(r4, gText_FiveMarks, r5, 1, 0, 1); + u32 windowId = sub_81C2D2C(gUnknown_0861CCCC, 0); + u32 width = GetStringWidth(1, gText_OTSlash, 0); + sub_81C25A4(windowId, gText_OTSlash, 0, 1, 0, 1); + sub_81C25A4(windowId, gText_FiveMarks, width, 1, 0, 1); } -#else -NAKED -void sub_81C335C() -{ - asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5,r6}\n\ - sub sp, 0x8\n\ - ldr r0, =gUnknown_0861CCCC\n\ - movs r1, 0\n\ - bl sub_81C2D2C\n\ - adds r4, r0, 0\n\ - lsls r4, 24\n\ - lsrs r4, 24\n\ - ldr r0, =gText_OTSlash\n\ - mov r8, r0\n\ - movs r0, 0x1\n\ - mov r1, r8\n\ - movs r2, 0\n\ - bl GetStringWidth\n\ - adds r5, r0, 0\n\ - movs r0, 0\n\ - mov r9, r0\n\ - str r0, [sp]\n\ - movs r6, 0x1\n\ - str r6, [sp, 0x4]\n\ - adds r0, r4, 0\n\ - mov r1, r8\n\ - movs r2, 0\n\ - movs r3, 0x1\n\ - bl sub_81C25A4\n\ - ldr r1, =gText_FiveMarks\n\ - lsls r5, 24\n\ - lsrs r5, 24\n\ - mov r0, r9\n\ - str r0, [sp]\n\ - str r6, [sp, 0x4]\n\ - adds r0, r4, 0\n\ - adds r2, r5, 0\n\ - movs r3, 0x1\n\ - bl sub_81C25A4\n\ - add sp, 0x8\n\ - pop {r3,r4}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - pop {r4-r6}\n\ - pop {r0}\n\ - bx r0\n\ - .pool\n\ - .syntax divided\n"); -} -#endif -void sub_81C33CC() +void sub_81C33CC(void) { int r4; StringCopy(gStringVar1, gText_UnkCtrlF907F908); StringAppend(gStringVar1, gText_FiveMarks); r4 = GetStringRightAlignXOffset(1, gStringVar1, 0x38); - sub_81C25A4(sub_81C2D2C(&gUnknown_0861CCCC, 1), gStringVar1, r4, 1, 0, 1); + sub_81C25A4(sub_81C2D2C(gUnknown_0861CCCC, 1), gStringVar1, r4, 1, 0, 1); } -void sub_81C3428() +void sub_81C3428(void) { - u8 *text; + const u8 *text; struct PokeSummary *sum = &gUnknown_0203CF1C->summary; if (gUnknown_0203CF1C->summary.sanity == 1) text = gText_EggWillTakeALongTime; @@ -3098,12 +3187,12 @@ void sub_81C3428() text = gText_EggWillTakeSomeTime; else text = gText_EggWillTakeALongTime; - sub_81C25A4(sub_81C2D2C(&gUnknown_0861CCCC, 2), text, 0, 1, 0, 0); + sub_81C25A4(sub_81C2D2C(gUnknown_0861CCCC, 2), text, 0, 1, 0, 0); } -void sub_81C349C() +void sub_81C349C(void) { - u8 *text; + const u8 *text; struct PokeSummary *sum = &gUnknown_0203CF1C->summary; if (gUnknown_0203CF1C->summary.sanity != 1) { @@ -3118,10 +3207,10 @@ void sub_81C349C() } else text = gText_OddEggFoundByCouple; - sub_81C25A4(sub_81C2D2C(&gUnknown_0861CCCC, 3), text, 0, 1, 0, 0); + sub_81C25A4(sub_81C2D2C(gUnknown_0861CCCC, 3), text, 0, 1, 0, 0); } -void sub_81C3530() +void sub_81C3530(void) { sub_81C35E4(); sub_81C3690(); @@ -3166,11 +3255,11 @@ void sub_81C3554(u8 taskId) data[0]++; } -void sub_81C35E4() +void sub_81C35E4(void) { const u8 *text; int offset; - if (gUnknown_0203CF1C->summary.item == ITEM_ENIGMA_BERRY && sub_81B1250() == 1 && (gUnknown_0203CF1C->unk40BE == 1 || gUnknown_0203CF1C->unk40BE == 4 || gUnknown_0203CF1C->unk40BE == 5)) + if (gUnknown_0203CF1C->summary.item == ITEM_ENIGMA_BERRY && sub_81B1250() == 1 && (gUnknown_0203CF1C->curMonIndex == 1 || gUnknown_0203CF1C->curMonIndex == 4 || gUnknown_0203CF1C->curMonIndex == 5)) { text = ItemId_GetName(ITEM_ENIGMA_BERRY); } @@ -3182,12 +3271,12 @@ void sub_81C35E4() text = gStringVar1; } offset = GetStringCenterAlignXOffset(1, text, 0x48) + 6; - sub_81C25A4(sub_81C2D2C(&gUnknown_0861CCEC, 0), text, offset, 1, 0, 0); + sub_81C25A4(sub_81C2D2C(gUnknown_0861CCEC, 0), text, offset, 1, 0, 0); } -void sub_81C3690() +void sub_81C3690(void) { - u8 *text; + const u8 *text; int offset; if (gUnknown_0203CF1C->summary.ribbons == 0) text = gText_None; @@ -3198,10 +3287,10 @@ void sub_81C3690() text = gStringVar4; } offset = GetStringCenterAlignXOffset(1, text, 0x46) + 6; - sub_81C25A4(sub_81C2D2C(&gUnknown_0861CCEC, 1), text, offset, 1, 0, 0); + sub_81C25A4(sub_81C2D2C(gUnknown_0861CCEC, 1), text, offset, 1, 0, 0); } -void sub_81C3710() +void sub_81C3710(void) { u8 *alloced1 = Alloc(8); u8 *alloced2 = Alloc(8); @@ -3223,12 +3312,12 @@ void sub_81C3710() Free(alloced4); } -void sub_81C37D8() +void sub_81C37D8(void) { - sub_81C25A4(sub_81C2D2C(&gUnknown_0861CCEC, 2), gStringVar4, 4, 1, 0, 0); + sub_81C25A4(sub_81C2D2C(gUnknown_0861CCEC, 2), gStringVar4, 4, 1, 0, 0); } -void sub_81C3808() +void sub_81C3808(void) { ConvertIntToDecimalStringN(gStringVar1, gUnknown_0203CF1C->summary.spatk, 1, 3); ConvertIntToDecimalStringN(gStringVar2, gUnknown_0203CF1C->summary.spdef, 1, 3); @@ -3240,15 +3329,15 @@ void sub_81C3808() DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_0861CE8E); } -void sub_81C3890() +void sub_81C3890(void) { - sub_81C25A4(sub_81C2D2C(&gUnknown_0861CCEC, 3), gStringVar4, 2, 1, 0, 0); + sub_81C25A4(sub_81C2D2C(gUnknown_0861CCEC, 3), gStringVar4, 2, 1, 0, 0); } -void sub_81C38C0() +void sub_81C38C0(void) { struct PokeSummary *sum = &gUnknown_0203CF1C->summary; - u8 r6 = sub_81C2D2C(&gUnknown_0861CCEC, 4); + u8 r6 = sub_81C2D2C(gUnknown_0861CCEC, 4); int offset; u32 expToNextLevel; ConvertIntToDecimalStringN(gStringVar1, sum->exp, 1, 7); @@ -3263,22 +3352,22 @@ void sub_81C38C0() sub_81C25A4(r6, gStringVar1, offset, 17, 0, 0); } -void sub_81C3984() +void sub_81C3984(void) { sub_81C3B08(0); sub_81C3B08(1); sub_81C3B08(2); sub_81C3B08(3); - if (gUnknown_0203CF1C->unk40BC == 3) + if (gUnknown_0203CF1C->mode == 3) { sub_81C3F44(); - if (gUnknown_0203CF1C->unk40C6 == 4) + if (gUnknown_0203CF1C->firstMoveIndex == MAX_MON_MOVES) { - if (gUnknown_0203CF1C->unk40C4 != 0) - sub_81C3E9C(gUnknown_0203CF1C->unk40C4); + if (gUnknown_0203CF1C->newMove != MOVE_NONE) + sub_81C3E9C(gUnknown_0203CF1C->newMove); } else - sub_81C3E9C(gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->unk40C6]); + sub_81C3E9C(gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->firstMoveIndex]); } } @@ -3302,22 +3391,22 @@ void sub_81C39F0(u8 taskId) sub_81C3B08(3); break; case 4: - if (gUnknown_0203CF1C->unk40BC == 3) + if (gUnknown_0203CF1C->mode == 3) sub_81C3F44(); break; case 5: - if (gUnknown_0203CF1C->unk40BC == 3) + if (gUnknown_0203CF1C->mode == 3) { - if (gUnknown_0203CF1C->unk40C6 == 4) - data[1] = gUnknown_0203CF1C->unk40C4; + if (gUnknown_0203CF1C->firstMoveIndex == MAX_MON_MOVES) + data[1] = gUnknown_0203CF1C->newMove; else - data[1] = gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->unk40C6]; + data[1] = gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->firstMoveIndex]; } break; case 6: - if (gUnknown_0203CF1C->unk40BC == 3) + if (gUnknown_0203CF1C->mode == 3) { - if (!(gUnknown_0203CF1C->unk40C4 == 0 && gUnknown_0203CF1C->unk40C6 == 4)) + if (!(gUnknown_0203CF1C->newMove == MOVE_NONE && gUnknown_0203CF1C->firstMoveIndex == MAX_MON_MOVES)) sub_81C3E9C(data[1]); } break; @@ -3328,193 +3417,44 @@ void sub_81C39F0(u8 taskId) data[0]++; } -#ifdef NONMATCHING void sub_81C3B08(u8 a) { - struct UnkSummaryStruct *r10 = gUnknown_0203CF1C; - u8 r8 = sub_81C2D2C(&gUnknown_0861CD14, 0); - u8 sp = sub_81C2D2C(&gUnknown_0861CD14, 1); - u8 r6; - u8 r5; - u8 *text; - int offset; - u16 move; - if (r10->summary.moves[a] != 0) + u8 pp; + u32 ppState; + const u8 *text; + u32 offset; + struct UnkSummaryStruct *summaryStruct = gUnknown_0203CF1C; + u8 r8 = sub_81C2D2C(gUnknown_0861CD14, 0); + u8 sp = sub_81C2D2C(gUnknown_0861CD14, 1); + u16 move = summaryStruct->summary.moves[a]; + + if (move != 0) { - move = r10->summary.moves[a]; - r6 = CalculatePPWithBonus(move, r10->summary.ppBonuses, a); - sub_81C25A4(r8, gMoveNames[move], 0, (a<<4) + 1, 0, 1); - ConvertIntToDecimalStringN(gStringVar1, r10->summary.pp[a], 1, 2); - ConvertIntToDecimalStringN(gStringVar2, r6, 1, 2); + pp = CalculatePPWithBonus(move, summaryStruct->summary.ppBonuses, a); + sub_81C25A4(r8, gMoveNames[move], 0, a * 16 + 1, 0, 1); + ConvertIntToDecimalStringN(gStringVar1, summaryStruct->summary.pp[a], 1, 2); + ConvertIntToDecimalStringN(gStringVar2, pp, 1, 2); DynamicPlaceholderTextUtil_Reset(); DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStringVar1); DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gStringVar2); DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_0861CE97); text = gStringVar4; - r5 = GetCurrentPpToMaxPpState(r10->summary.pp[a], r6) + 9; + ppState = GetCurrentPpToMaxPpState(summaryStruct->summary.pp[a], pp) + 9; offset = GetStringRightAlignXOffset(1, text, 0x2C); } else { - sub_81C25A4(r8, gText_OneDash, 0, (a<<4) + 1, 0, 1); + sub_81C25A4(r8, gText_OneDash, 0, a * 16 + 1, 0, 1); text = gText_TwoDashes; - r5 = 12; + ppState = 12; offset = GetStringCenterAlignXOffset(1, text, 0x2C); } - sub_81C25A4(sp, text, offset, (a<<4), 0, r5); -} -#else -NAKED -void sub_81C3B08(u8 a) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0xC\n\ - lsls r0, 24\n\ - lsrs r7, r0, 24\n\ - ldr r0, =gUnknown_0203CF1C\n\ - ldr r0, [r0]\n\ - mov r10, r0\n\ - ldr r4, =gUnknown_0861CD14\n\ - adds r0, r4, 0\n\ - movs r1, 0\n\ - bl sub_81C2D2C\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r8, r0\n\ - adds r0, r4, 0\n\ - movs r1, 0x1\n\ - bl sub_81C2D2C\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - str r0, [sp, 0x8]\n\ - lsls r1, r7, 1\n\ - mov r0, r10\n\ - adds r0, 0x84\n\ - adds r0, r1\n\ - ldrh r5, [r0]\n\ - cmp r5, 0\n\ - beq _081C3C00\n\ - mov r0, r10\n\ - adds r0, 0xA4\n\ - ldrb r1, [r0]\n\ - adds r0, r5, 0\n\ - adds r2, r7, 0\n\ - bl CalculatePPWithBonus\n\ - adds r6, r0, 0\n\ - lsls r6, 24\n\ - lsrs r6, 24\n\ - movs r0, 0xD\n\ - adds r1, r5, 0\n\ - muls r1, r0\n\ - ldr r0, =gMoveNames\n\ - adds r1, r0\n\ - lsls r0, r7, 4\n\ - mov r9, r0\n\ - mov r3, r9\n\ - adds r3, 0x1\n\ - lsls r3, 24\n\ - lsrs r3, 24\n\ - movs r0, 0\n\ - str r0, [sp]\n\ - movs r0, 0x1\n\ - str r0, [sp, 0x4]\n\ - mov r0, r8\n\ - movs r2, 0\n\ - bl sub_81C25A4\n\ - ldr r0, =gStringVar1\n\ - mov r8, r0\n\ - mov r5, r10\n\ - adds r5, 0x8C\n\ - adds r5, r7\n\ - ldrb r1, [r5]\n\ - movs r2, 0x1\n\ - movs r3, 0x2\n\ - bl ConvertIntToDecimalStringN\n\ - ldr r4, =gStringVar2\n\ - adds r0, r4, 0\n\ - adds r1, r6, 0\n\ - movs r2, 0x1\n\ - movs r3, 0x2\n\ - bl ConvertIntToDecimalStringN\n\ - bl DynamicPlaceholderTextUtil_Reset\n\ - movs r0, 0\n\ - mov r1, r8\n\ - bl DynamicPlaceholderTextUtil_SetPlaceholderPtr\n\ - movs r0, 0x1\n\ - adds r1, r4, 0\n\ - bl DynamicPlaceholderTextUtil_SetPlaceholderPtr\n\ - ldr r4, =gStringVar4\n\ - ldr r1, =gUnknown_0861CE97\n\ - adds r0, r4, 0\n\ - bl DynamicPlaceholderTextUtil_ExpandPlaceholders\n\ - adds r7, r4, 0\n\ - ldrb r0, [r5]\n\ - adds r1, r6, 0\n\ - bl GetCurrentPpToMaxPpState\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - adds r5, r0, 0\n\ - adds r5, 0x9\n\ - movs r0, 0x1\n\ - adds r1, r7, 0\n\ - movs r2, 0x2C\n\ - bl GetStringRightAlignXOffset\n\ - mov r4, r9\n\ - b _081C3C26\n\ - .pool\n\ -_081C3C00:\n\ - ldr r1, =gText_OneDash\n\ - lsls r4, r7, 4\n\ - adds r3, r4, 0x1\n\ - lsls r3, 24\n\ - lsrs r3, 24\n\ - str r5, [sp]\n\ - movs r0, 0x1\n\ - str r0, [sp, 0x4]\n\ - mov r0, r8\n\ - movs r2, 0\n\ - bl sub_81C25A4\n\ - ldr r7, =gText_TwoDashes\n\ - movs r5, 0xC\n\ - movs r0, 0x1\n\ - adds r1, r7, 0\n\ - movs r2, 0x2C\n\ - bl GetStringCenterAlignXOffset\n\ -_081C3C26:\n\ - lsls r2, r0, 24\n\ - lsrs r2, 24\n\ - adds r3, r4, 0x1\n\ - lsls r3, 24\n\ - lsrs r3, 24\n\ - movs r0, 0\n\ - str r0, [sp]\n\ - lsls r0, r5, 24\n\ - lsrs r0, 24\n\ - str r0, [sp, 0x4]\n\ - ldr r0, [sp, 0x8]\n\ - adds r1, r7, 0\n\ - bl sub_81C25A4\n\ - add sp, 0xC\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .pool\n\ - .syntax divided\n"); + sub_81C25A4(sp, text, offset, a * 16 + 1, 0, ppState); } -#endif void sub_81C3C5C(u16 move) { - u8 *text; + const u8 *text; if (move != 0) { FillWindowPixelRect(14, 0, 0x35, 0, 0x13, 0x20); @@ -3537,16 +3477,16 @@ void sub_81C3C5C(u16 move) } } -void sub_81C3D08() +void sub_81C3D08(void) { sub_81C3B08(0); sub_81C3B08(1); sub_81C3B08(2); sub_81C3B08(3); - if (gUnknown_0203CF1C->unk40BC == 3) + if (gUnknown_0203CF1C->mode == 3) { sub_81C3F44(); - sub_81C3E2C(gUnknown_0203CF1C->unk40C6); + sub_81C3E2C(gUnknown_0203CF1C->firstMoveIndex); } } @@ -3570,14 +3510,14 @@ void sub_81C3D54(u8 taskId) sub_81C3B08(3); break; case 4: - if (gUnknown_0203CF1C->unk40BC == 3) + if (gUnknown_0203CF1C->mode == 3) sub_81C3F44(); break; case 5: - if (gUnknown_0203CF1C->unk40BC == 3) + if (gUnknown_0203CF1C->mode == 3) { - if (!(gUnknown_0203CF1C->unk40C4 == 0 && gUnknown_0203CF1C->unk40C6 == 4)) - sub_81C3E2C(gUnknown_0203CF1C->unk40C6); + if (!(gUnknown_0203CF1C->newMove == MOVE_NONE && gUnknown_0203CF1C->firstMoveIndex == MAX_MON_MOVES)) + sub_81C3E2C(gUnknown_0203CF1C->firstMoveIndex); } break; case 6: @@ -3592,20 +3532,20 @@ void sub_81C3E2C(u8 moveSlot) u16 move; if (moveSlot == 4) - move = gUnknown_0203CF1C->unk40C4; + move = gUnknown_0203CF1C->newMove; else move = gUnknown_0203CF1C->summary.moves[moveSlot]; if (move != MOVE_NONE) { - u8 windowId = sub_81C2D2C(&gUnknown_0861CD14, 2); + u8 windowId = sub_81C2D2C(gUnknown_0861CD14, 2); sub_81C25A4(windowId, gContestEffectDescriptionPointers[gContestMoves[move].effect], 6, 1, 0, 0); } } void sub_81C3E9C(u16 move) { - u8 windowId = sub_81C2D2C(&gUnknown_0861CD14, 2); + u8 windowId = sub_81C2D2C(gUnknown_0861CD14, 2); FillWindowPixelBuffer(windowId, 0); if (move != MOVE_NONE) { @@ -3630,15 +3570,15 @@ void sub_81C3E9C(u16 move) void sub_81C3F44(void) { - u8 windowId1 = sub_81C2D2C(&gUnknown_0861CD14, 0); - u8 windowId2 = sub_81C2D2C(&gUnknown_0861CD14, 1); - if (gUnknown_0203CF1C->unk40C4 == MOVE_NONE) + u8 windowId1 = sub_81C2D2C(gUnknown_0861CD14, 0); + u8 windowId2 = sub_81C2D2C(gUnknown_0861CD14, 1); + if (gUnknown_0203CF1C->newMove == MOVE_NONE) { sub_81C25A4(windowId1, gText_Cancel, 0, 0x41, 0, 1); } else { - u16 move = gUnknown_0203CF1C->unk40C4; + u16 move = gUnknown_0203CF1C->newMove; if (gUnknown_0203CF1C->unk40C0 == 2) sub_81C25A4(windowId1, gMoveNames[move], 0, 0x41, 0, 6); else @@ -3655,15 +3595,15 @@ void sub_81C3F44(void) void sub_81C4064(void) { - u8 windowId = sub_81C2D2C(&gUnknown_0861CD14, 0); + u8 windowId = sub_81C2D2C(gUnknown_0861CD14, 0); FillWindowPixelRect(windowId, 0, 0, 0x42, 0x48, 0x10); CopyWindowToVram(windowId, 2); } void sub_81C40A0(u8 a, u8 b) { - u8 windowId1 = sub_81C2D2C(&gUnknown_0861CD14, 0); - u8 windowId2 = sub_81C2D2C(&gUnknown_0861CD14, 1); + u8 windowId1 = sub_81C2D2C(gUnknown_0861CD14, 0); + u8 windowId2 = sub_81C2D2C(gUnknown_0861CD14, 1); FillWindowPixelRect(windowId1, 0, 0, a * 16, 0x48, 0x10); FillWindowPixelRect(windowId1, 0, 0, b * 16, 0x48, 0x10); @@ -3677,7 +3617,7 @@ void sub_81C40A0(u8 a, u8 b) void sub_81C4154(void) { - u8 windowId = sub_81C2D2C(&gUnknown_0861CD14, 2); + u8 windowId = sub_81C2D2C(gUnknown_0861CD14, 2); FillWindowPixelBuffer(windowId, 0); sub_81C25A4(windowId, gText_HMMovesCantBeForgotten2, 6, 1, 0, 0); } @@ -3687,21 +3627,21 @@ void sub_81C4190(void) u8 i; for (i = 0; i < 28; i++) - gUnknown_0203CF1C->unk40D3[i] |= 0xFF; + gUnknown_0203CF1C->spriteIds[i] |= 0xFF; } void sub_81C41C0(u8 spriteArrayId) { - if (gUnknown_0203CF1C->unk40D3[spriteArrayId] != 0xFF) + if (gUnknown_0203CF1C->spriteIds[spriteArrayId] != 0xFF) { - DestroySprite(&gSprites[gUnknown_0203CF1C->unk40D3[spriteArrayId]]); - gUnknown_0203CF1C->unk40D3[spriteArrayId] = 0xFF; + DestroySprite(&gSprites[gUnknown_0203CF1C->spriteIds[spriteArrayId]]); + gUnknown_0203CF1C->spriteIds[spriteArrayId] = 0xFF; } } void sub_81C4204(u8 spriteArrayId, bool8 invisible) { - gSprites[gUnknown_0203CF1C->unk40D3[spriteArrayId]].invisible = invisible; + gSprites[gUnknown_0203CF1C->spriteIds[spriteArrayId]].invisible = invisible; } void sub_81C424C(void) @@ -3710,7 +3650,7 @@ void sub_81C424C(void) for (i = 3; i < 28; i++) { - if (gUnknown_0203CF1C->unk40D3[i] != 0xFF) + if (gUnknown_0203CF1C->spriteIds[i] != 0xFF) sub_81C4204(i, TRUE); } } @@ -3739,18 +3679,16 @@ void sub_81C42C8(void) for (i = 3; i < 8; i++) { - if (gUnknown_0203CF1C->unk40D3[i] == 0xFF) - gUnknown_0203CF1C->unk40D3[i] = CreateSprite(&gUnknown_0861CFC4, 0, 0, 2); + if (gUnknown_0203CF1C->spriteIds[i] == 0xFF) + gUnknown_0203CF1C->spriteIds[i] = CreateSprite(&gUnknown_0861CFC4, 0, 0, 2); sub_81C4204(i, TRUE); } } -extern const u8 gUnknown_0861CFDC[]; - void sub_81C4318(u8 typeId, u8 x, u8 y, u8 spriteArrayId) { - struct Sprite *sprite = &gSprites[gUnknown_0203CF1C->unk40D3[spriteArrayId]]; + struct Sprite *sprite = &gSprites[gUnknown_0203CF1C->spriteIds[spriteArrayId]]; StartSpriteAnim(sprite, typeId); sprite->oam.paletteNum = gUnknown_0861CFDC[typeId]; sprite->pos1.x = x + 16; @@ -3809,15 +3747,351 @@ void sub_81C4484(void) void sub_81C44F0(void) { - if (gUnknown_0203CF1C->unk40C4 == MOVE_NONE) + if (gUnknown_0203CF1C->newMove == MOVE_NONE) { sub_81C4204(7, TRUE); } else { if (gUnknown_0203CF1C->unk40C0 == 2) - sub_81C4318(gBattleMoves[gUnknown_0203CF1C->unk40C4].type, 0x55, 0x60, 7); + sub_81C4318(gBattleMoves[gUnknown_0203CF1C->newMove].type, 0x55, 0x60, 7); + else + sub_81C4318(NUMBER_OF_MON_TYPES + gContestMoves[gUnknown_0203CF1C->newMove].contestCategory, 0x55, 0x60, 7); + } +} + +void sub_81C4568(u8 a0, u8 a1) +{ + struct Sprite *sprite1 = &gSprites[gUnknown_0203CF1C->spriteIds[a0 + 3]]; + struct Sprite *sprite2 = &gSprites[gUnknown_0203CF1C->spriteIds[a1 + 3]]; + + u8 temp = sprite1->animNum; + sprite1->animNum = sprite2->animNum; + sprite2->animNum = temp; + + temp = sprite1->oam.paletteNum; + sprite1->oam.paletteNum = sprite2->oam.paletteNum; + sprite2->oam.paletteNum = temp; + + sprite1->animBeginning = TRUE; + sprite1->animEnded = FALSE; + sprite2->animBeginning = TRUE; + sprite2->animEnded = FALSE; +} + +u8 sub_81C45F4(struct Pokemon *mon, s16 *a1) +{ + const struct CompressedSpritePalette *pal; + struct PokeSummary *summary = &gUnknown_0203CF1C->summary; + + switch (*a1) + { + default: + return sub_81C47B4(mon); + case 0: + if (gMain.inBattle) + { + if (sub_80688F8(3, gUnknown_0203CF1C->curMonIndex)) + { + HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[summary->species2], gMonSpritesGfxPtr->sprites[1], summary->species2, summary->pid); + } + else + { + HandleLoadSpecialPokePic_2(&gMonFrontPicTable[summary->species2], gMonSpritesGfxPtr->sprites[1], summary->species2, summary->pid); + } + } + else + { + if (gMonSpritesGfxPtr != NULL) + { + if (gUnknown_0203CF1C->monList.mons == gPlayerParty || gUnknown_0203CF1C->mode == 2 || gUnknown_0203CF1C->unk40EF == TRUE) + { + HandleLoadSpecialPokePic_2(&gMonFrontPicTable[summary->species2], gMonSpritesGfxPtr->sprites[1], summary->species2, summary->pid); + } + else + { + HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[summary->species2], gMonSpritesGfxPtr->sprites[1], summary->species2, summary->pid); + } + } + else + { + if (gUnknown_0203CF1C->monList.mons == gPlayerParty || gUnknown_0203CF1C->mode == 2 || gUnknown_0203CF1C->unk40EF == TRUE) + { + HandleLoadSpecialPokePic_2(&gMonFrontPicTable[summary->species2], sub_806F4F8(0, 1), summary->species2, summary->pid); + } + else + { + HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[summary->species2], sub_806F4F8(0, 1), summary->species2, summary->pid); + } + } + } + (*a1)++; + return -1; + case 1: + pal = GetMonSpritePalStructFromOtIdPersonality(summary->species2, summary->OTID, summary->pid); + LoadCompressedObjectPalette(pal); + SetMultiuseSpriteTemplateToPokemon(pal->tag, 1); + (*a1)++; + return -1; + } +} + +void sub_81C4778(void) +{ + struct PokeSummary *summary = &gUnknown_0203CF1C->summary; + if (!summary->isEgg) + { + if (ShouldPlayNormalMonCry(&gUnknown_0203CF1C->currentMon) == TRUE) + { + PlayCry3(summary->species2, 0, 0); + } + else + { + PlayCry3(summary->species2, 0, 11); + } + } +} + +u8 sub_81C47B4(struct Pokemon *unused) +{ + struct PokeSummary *summary = &gUnknown_0203CF1C->summary; + u8 spriteId = CreateSprite(&gMultiuseSpriteTemplate, 40, 64, 5); + struct Sprite *sprite = &gSprites[spriteId]; + + FreeSpriteOamMatrix(sprite); + + sprite->data[0] = summary->species2; + sprite->data[2] = 0; + gSprites[spriteId].callback = sub_81C4844; + sprite->oam.priority = 0; + + if (!IsMonSpriteNotFlipped(summary->species2)) + { + sprite->hFlip = TRUE; + } + else + { + sprite->hFlip = FALSE; + } + + return spriteId; +} + +void sub_81C4844(struct Sprite *sprite) +{ + struct PokeSummary *summary = &gUnknown_0203CF1C->summary; + + if (!gPaletteFade.active && sprite->data[2] != 1) + { + sprite->data[1] = IsMonSpriteNotFlipped(sprite->data[0]); + sub_81C4778(); + PokemonSummaryDoMonAnimation(sprite, sprite->data[0], summary->isEgg); + } +} + +void sub_81C488C(u8 a0) +{ + sUnusedTaskId = a0; +} + +void sub_81C4898(void) +{ + if (sUnusedTaskId != 0xFF) + { + DestroyTask(sUnusedTaskId); + sUnusedTaskId = 0xFF; + } +} + +bool32 sub_81C48B4(void) +{ + if (gSprites[gUnknown_0203CF1C->spriteIds[0]].callback == SpriteCallbackDummy) + { + return FALSE; + } + else + { + return TRUE; + } +} + +void sub_81C48F0(void) +{ + u16 i; + u16 paletteIndex; + + gSprites[gUnknown_0203CF1C->spriteIds[0]].animPaused = TRUE; + gSprites[gUnknown_0203CF1C->spriteIds[0]].callback = SpriteCallbackDummy; + sub_806EE98(); + + paletteIndex = (gSprites[gUnknown_0203CF1C->spriteIds[0]].oam.paletteNum * 16) | 0x100; + + for (i = 0; i < 16; i++) + { + gPlttBufferUnfaded[(u16)(i + paletteIndex)] = gPlttBufferFaded[(u16)(i + paletteIndex)]; + } +} + +void sub_81C4984(struct Pokemon *mon) +{ + struct Sprite *sprite = sub_811FF94(30003, 30003, gUnknown_0861D120); + + gUnknown_0203CF1C->markingsSpriteId = sprite; + + if (sprite != NULL) + { + StartSpriteAnim(sprite, GetMonData(mon, MON_DATA_MARKINGS)); + gUnknown_0203CF1C->markingsSpriteId->pos1.x = 60; + gUnknown_0203CF1C->markingsSpriteId->pos1.y = 26; + gUnknown_0203CF1C->markingsSpriteId->oam.priority = 1; + } +} + +void sub_81C49E0(struct Pokemon *mon) +{ + DestroySprite(gUnknown_0203CF1C->markingsSpriteId); + FreeSpriteTilesByTag(30003); + sub_81C4984(mon); +} + +void sub_81C4A08(struct Pokemon *mon) +{ + u8 ball = ItemIdToBallId(GetMonData(mon, MON_DATA_POKEBALL)); + + LoadBallGfx(ball); + gUnknown_0203CF1C->spriteIds[1] = CreateSprite(&gBallSpriteTemplates[ball], 16, 136, 0); + gSprites[gUnknown_0203CF1C->spriteIds[1]].callback = SpriteCallbackDummy; + gSprites[gUnknown_0203CF1C->spriteIds[1]].oam.priority = 3; +} + +void sub_81C4A88(void) +{ + u8 *spriteId = &gUnknown_0203CF1C->spriteIds[2]; + u8 anim; + + if (*spriteId == 0xFF) + { + *spriteId = CreateSprite(&gUnknown_0861D108, 64, 152, 0); + } + + anim = sub_81B205C(&gUnknown_0203CF1C->currentMon); + + if (anim != 0) + { + StartSpriteAnim(&gSprites[*spriteId], anim - 1); + sub_81C4204(2, FALSE); + } + else + { + sub_81C4204(2, TRUE); + } +} + +void sub_81C4AF8(u8 a0) +{ + u8 i; + u8 *spriteIds = &gUnknown_0203CF1C->spriteIds[a0]; + + if (gUnknown_0203CF1C->unk40C0 > 1) + { + u8 subsprite = 0; + if (a0 == 8) + { + subsprite = 1; + } + + for (i = 0; i < 10; i++) + { + spriteIds[i] = CreateSprite(&gUnknown_0861D084, i * 16 + 89, 40, subsprite); + if (i == 0) + { + StartSpriteAnim(&gSprites[spriteIds[0]], 4); + } + else if (i == 9) + { + StartSpriteAnim(&gSprites[spriteIds[9]], 5); + } + else + { + StartSpriteAnim(&gSprites[spriteIds[i]], 6); + } + gSprites[spriteIds[i]].callback = sub_81C4BE4; + gSprites[spriteIds[i]].data[0] = a0; + gSprites[spriteIds[i]].data[1] = 0; + } + } +} + +void sub_81C4BE4(struct Sprite *sprite) +{ + if (sprite->animNum > 3 && sprite->animNum < 7) + { + sprite->data[1] = (sprite->data[1] + 1) & 0x1F; + if (sprite->data[1] > 24) + { + sprite->invisible = TRUE; + } else - sub_81C4318(NUMBER_OF_MON_TYPES + gContestMoves[gUnknown_0203CF1C->unk40C4].contestCategory, 0x55, 0x60, 7); + { + sprite->invisible = FALSE; + } + } + else + { + sprite->data[1] = 0; + sprite->invisible = FALSE; + } + + if (sprite->data[0] == 8) + { + sprite->pos2.y = gUnknown_0203CF1C->firstMoveIndex * 16; + } + else + { + sprite->pos2.y = gUnknown_0203CF1C->secondMoveIndex * 16; + } +} + +void sub_81C4C60(u8 a0) +{ + u8 i; + for (i = 0; i < 10; i++) + { + sub_81C41C0(a0 + i); + } +} + +void sub_81C4C84(u8 a0) +{ + u8 i; + u8 *spriteIds = &gUnknown_0203CF1C->spriteIds[8]; + a0 *= 3; + + for (i = 0; i < 10; i++) + { + if (i == 0) + { + StartSpriteAnim(&gSprites[spriteIds[0]], a0 + 4); + } + else if (i == 9) + { + StartSpriteAnim(&gSprites[spriteIds[9]], a0 + 5); + } + else + { + StartSpriteAnim(&gSprites[spriteIds[i]], a0 + 6); + } + } +} + +void sub_81C4D18(u8 a0) +{ + u8 i; + u8 *spriteIds = &gUnknown_0203CF1C->spriteIds[a0]; + + for (i = 0; i < 10; i++) + { + gSprites[spriteIds[i]].data[1] = 0; + gSprites[spriteIds[i]].invisible = FALSE; } } diff --git a/src/unk_pokedex_area_screen_helper.c b/src/unk_pokedex_area_screen_helper.c new file mode 100644 index 000000000..3bed79a65 --- /dev/null +++ b/src/unk_pokedex_area_screen_helper.c @@ -0,0 +1,75 @@ +#include "global.h" +#include "main.h" +#include "menu.h" +#include "bg.h" +#include "malloc.h" +#include "palette.h" + +EWRAM_DATA u8 *gUnknown_0203CF28 = NULL; + +static const u16 gUnknown_0861D140[] = INCBIN_U16("graphics/interface/region_map.gbapal"); +extern const u8 gUnknown_0861D1A0[]; +extern const u8 gUnknown_0861DEF4[]; +extern const u8 gUnknown_0861E208[]; +extern const u8 gUnknown_0861EF64[]; + +struct UnkStruct_1C4D70 +{ + u32 bg:2; + u32 unk2:8; + u32 unk10:2; + u32 unk12:20; +}; + +void sub_81C4D70(struct UnkStruct_1C4D70 *template) +{ + u8 unk; + gUnknown_0203CF28 = Alloc(4); + unk = template->unk10; + + if (unk == 0) + { + SetBgAttribute(template->bg, BG_CTRL_ATTR_WRAPAROUND, 0); + decompress_and_copy_tile_data_to_vram(template->bg, gUnknown_0861D1A0, 0, template->unk2, unk); + sub_8199D3C(decompress_and_copy_tile_data_to_vram(template->bg, gUnknown_0861DEF4, 0, 0, 1), template->unk2, 32, 32, unk); + } + else + { + SetBgAttribute(template->bg, BG_CTRL_ATTR_WRAPAROUND, 2); + SetBgAttribute(template->bg, 9, 1); + decompress_and_copy_tile_data_to_vram(template->bg, gUnknown_0861E208, 0, template->unk2, 0); + sub_8199D3C(decompress_and_copy_tile_data_to_vram(template->bg, gUnknown_0861EF64, 0, 0, 1), template->unk2, 64, 64, 1); + } + + ChangeBgX(template->bg, 0, 0); + ChangeBgY(template->bg, 0, 0); + SetBgAttribute(template->bg, BG_CTRL_ATTR_SCREENSIZE, 1); + CpuCopy32(gUnknown_0861D140, &gPlttBufferUnfaded[0x70], 0x60); + *gUnknown_0203CF28 = template->bg; +} + +bool32 sub_81C4E90(void) +{ + if (!free_temp_tile_data_buffers_if_possible()) + { + ShowBg(*gUnknown_0203CF28); + return FALSE; + } + else + { + return TRUE; + } +} + +void sub_81C4EB4(void) +{ + if (gUnknown_0203CF28 != NULL) + { + FREE_AND_SET_NULL(gUnknown_0203CF28); + } +} + +void sub_81C4ED0(u32 a0) +{ + ChangeBgY(*gUnknown_0203CF28, a0 * 0x100, 0); +} -- cgit v1.2.3 From 332a8bcb1d6c9b01e27cc4f5a7a08ae26bf62f79 Mon Sep 17 00:00:00 2001 From: Diegoisawesome Date: Tue, 14 Aug 2018 22:05:48 -0700 Subject: Extract rodata for unk_pokedex_area_screen_helper --- src/pokemon_summary_screen.c | 17 ++++++++--------- src/unk_pokedex_area_screen_helper.c | 8 ++++---- 2 files changed, 12 insertions(+), 13 deletions(-) (limited to 'src') diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index b5117d45d..4d194f74a 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -45,13 +45,12 @@ static EWRAM_DATA struct UnkSummaryStruct { - /*0x00*/ union - { + /*0x00*/ union { struct Pokemon *mons; struct BoxPokemon *boxMons; } monList; - /*0x04*/ void (*callback)(void); - /*0x08*/ struct Sprite *markingsSpriteId; + /*0x04*/ MainCallback callback; + /*0x08*/ struct Sprite *markingsSprite; /*0x0C*/ struct Pokemon currentMon; /*0x70*/ struct PokeSummary { @@ -3936,20 +3935,20 @@ void sub_81C4984(struct Pokemon *mon) { struct Sprite *sprite = sub_811FF94(30003, 30003, gUnknown_0861D120); - gUnknown_0203CF1C->markingsSpriteId = sprite; + gUnknown_0203CF1C->markingsSprite = sprite; if (sprite != NULL) { StartSpriteAnim(sprite, GetMonData(mon, MON_DATA_MARKINGS)); - gUnknown_0203CF1C->markingsSpriteId->pos1.x = 60; - gUnknown_0203CF1C->markingsSpriteId->pos1.y = 26; - gUnknown_0203CF1C->markingsSpriteId->oam.priority = 1; + gUnknown_0203CF1C->markingsSprite->pos1.x = 60; + gUnknown_0203CF1C->markingsSprite->pos1.y = 26; + gUnknown_0203CF1C->markingsSprite->oam.priority = 1; } } void sub_81C49E0(struct Pokemon *mon) { - DestroySprite(gUnknown_0203CF1C->markingsSpriteId); + DestroySprite(gUnknown_0203CF1C->markingsSprite); FreeSpriteTilesByTag(30003); sub_81C4984(mon); } diff --git a/src/unk_pokedex_area_screen_helper.c b/src/unk_pokedex_area_screen_helper.c index 3bed79a65..521af6dd9 100644 --- a/src/unk_pokedex_area_screen_helper.c +++ b/src/unk_pokedex_area_screen_helper.c @@ -8,10 +8,10 @@ EWRAM_DATA u8 *gUnknown_0203CF28 = NULL; static const u16 gUnknown_0861D140[] = INCBIN_U16("graphics/interface/region_map.gbapal"); -extern const u8 gUnknown_0861D1A0[]; -extern const u8 gUnknown_0861DEF4[]; -extern const u8 gUnknown_0861E208[]; -extern const u8 gUnknown_0861EF64[]; +static const u8 gUnknown_0861D1A0[] = INCBIN_U8("graphics/interface/region_map.8bpp.lz"); +static const u8 gUnknown_0861DEF4[] = INCBIN_U8("graphics/interface/region_map.bin.lz"); +static const u8 gUnknown_0861E208[] = INCBIN_U8("graphics/interface/region_map_affine.8bpp.lz"); +static const u8 gUnknown_0861EF64[] = INCBIN_U8("graphics/interface/region_map_affine.bin.lz"); struct UnkStruct_1C4D70 { -- cgit v1.2.3 From 0bc975bf57a1603d2d23265ea9fad39cc05622b9 Mon Sep 17 00:00:00 2001 From: Diegoisawesome Date: Wed, 15 Aug 2018 01:44:20 -0700 Subject: Document and cleanup pokemon_summary_screen --- src/pokemon_summary_screen.c | 992 +++++++++++++++++++++++-------------------- 1 file changed, 535 insertions(+), 457 deletions(-) (limited to 'src') diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index 4d194f74a..347f38285 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -28,6 +28,7 @@ #include "pokeball.h" #include "pokemon.h" #include "pokemon_storage_system.h" +#include "pokemon_summary_screen.h" #include "region_map.h" #include "scanline_effect.h" #include "sound.h" @@ -40,6 +41,7 @@ #include "window.h" #include "constants/items.h" #include "constants/moves.h" +#include "constants/region_map_sections.h" #include "constants/songs.h" #include "constants/species.h" @@ -58,7 +60,7 @@ static EWRAM_DATA struct UnkSummaryStruct u16 species2; // 0x2 u8 isEgg; // 0x4 u8 level; // 0x5 - u8 ribbons; // 0x6 + u8 ribbonCount; // 0x6 u8 unk7; // 0x7 u8 altAbility; // 0x8 u8 metLocation; // 0x9 @@ -93,9 +95,9 @@ static EWRAM_DATA struct UnkSummaryStruct bool8 isBoxMon; u8 curMonIndex; u8 maxMonIndex; - u8 unk40C0; - u8 unk40C1; - u8 unk40C2; + u8 currPageIndex; + u8 minPageIndex; + u8 maxPageIndex; bool8 unk40C3; u16 newMove; u8 firstMoveIndex; @@ -131,10 +133,10 @@ struct UnkStruct_61CC04 bool8 sub_81B1250(void); bool8 sub_81BFB10(void); void sub_81BFAE4(void); -void sub_81BFE24(void); +static void InitBGs(void); u8 sub_81BFEB0(void); -void sub_81C0098(struct Pokemon* a); -bool8 sub_81C00F0(struct Pokemon* a); +void CopyMonToSummaryStruct(struct Pokemon* a); +bool8 ExtractMonDataToSummaryStruct(struct Pokemon* a); void sub_81C0348(void); void sub_81C0484(u8 taskId); void sub_81C0510(u8 taskId); @@ -156,7 +158,7 @@ void sub_81C1070(s16* a, s8 b, u8* c); void sub_81C11F4(u8 a); void sub_81C129C(u8 a); void sub_81C12E4(u8 taskId); -void sub_81C13B0(u8 a, u8 b); +void sub_81C13B0(u8 taskId, bool8 b); void sub_81C14BC(struct Pokemon *mon, u8 a, u8 b); void sub_81C15EC(struct BoxPokemon *mon, u8 a, u8 b); void sub_81C171C(u8 taskId); @@ -181,7 +183,7 @@ void sub_81C25E8(void); void sub_81C2628(void); void sub_81C2794(void); void sub_81C27DC(struct Pokemon *mon, u16 a); -void sub_81C286C(void); +void PrintRentalMonStatsPage(void); void sub_81C2AFC(u8 a); void sub_81C2C38(u8 a); void sub_81C2D68(u8 a); @@ -189,38 +191,38 @@ void sub_81C2D9C(u8 a); void sub_81C2DE4(u8 a); void sub_81C2E00(void); void sub_81C2E40(u8 taskId); -void sub_81C2EC4(void); -void sub_81C2F5C(void); -void sub_81C2FD8(void); -void sub_81C302C(void); -void sub_81C307C(void); -void sub_81C3194(void); -void sub_81C31C0(void); -void sub_81C31F0(u8 *a); -u8 sub_81C3220(void); -bool8 sub_81C32BC(void); -bool8 sub_81C3304(void); -void sub_81C335C(void); -void sub_81C33CC(void); -void sub_81C3428(void); -void sub_81C349C(void); +void PrintMonOTName(void); +void PrintMonOTID(void); +void PrintMonAbilityName(void); +void PrintMonAbilityDescription(void); +void BufferMonTrainerMemo(void); +void PrintMonTrainerMemo(void); +void BufferNatureString(void); +void GetMetLevelString(u8 *a); +bool8 DoesMonOTMatchOwner(void); +bool8 MonCameFromGBAGames(void); +bool8 IsInGamePartnerMon(void); +void PrintEggOTName(void); +void PrintEggOTID(void); +void PrintEggState(void); +void PrintEggMemo(void); void sub_81C3554(u8 taskId); -void sub_81C35E4(void); +void PrintHeldItemName(void); void sub_81C3530(void); -void sub_81C3690(void); -void sub_81C3710(void); -void sub_81C37D8(void); -void sub_81C3808(void); -void sub_81C3890(void); -void sub_81C38C0(void); +void PrintRibbonCount(void); +void BufferLeftColumnStats(void); +void PrintLeftColumnStats(void); +void BufferRightColumnStats(void); +void PrintRightColumnStats(void); +void PrintExpPointsNextLevel(void); void sub_81C3984(void); void sub_81C39F0(u8 taskId); -void sub_81C3B08(u8 a); +void PrintMoveNameAndPP(u8 a); void sub_81C3D08(void); void sub_81C3D54(u8 taskId); void sub_81C3E2C(u8 a); void sub_81C3E9C(u16 a); -void sub_81C3F44(void); +void PrintNewMoveDetailsOrCancelText(void); void sub_81C4064(void); void sub_81C40A0(u8 a, u8 b); void sub_81C4154(void); @@ -238,7 +240,7 @@ u8 sub_81C45F4(struct Pokemon *a, s16 *b); u8 sub_81C47B4(struct Pokemon *unused); void sub_81C4844(struct Sprite *); void sub_81C488C(u8 a); -void sub_81C4898(void); +void DestoryUnusedTask(void); void sub_81C48F0(void); void sub_81C4984(struct Pokemon *mon); void sub_81C49E0(struct Pokemon *mon); @@ -710,7 +712,7 @@ static const struct SpriteTemplate gUnknown_0861D108 = static const u16 gUnknown_0861D120[] = INCBIN_U16("graphics/interface/summary_markings.gbapal"); // code -void sub_81BF8EC(u8 mode, void *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void)) +void ShowPokemonSummaryScreen(u8 mode, void *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void)) { gUnknown_0203CF1C = AllocZeroed(sizeof(*gUnknown_0203CF1C)); gUnknown_0203CF1C->mode = mode; @@ -719,31 +721,31 @@ void sub_81BF8EC(u8 mode, void *mons, u8 monIndex, u8 maxMonIndex, void (*callba gUnknown_0203CF1C->maxMonIndex = maxMonIndex; gUnknown_0203CF1C->callback = callback; - if (mode == 2) + if (mode == PSS_MODE_UNK2) gUnknown_0203CF1C->isBoxMon = TRUE; else gUnknown_0203CF1C->isBoxMon = FALSE; switch (mode) { - case 0: - case 2: - gUnknown_0203CF1C->unk40C1 = 0; - gUnknown_0203CF1C->unk40C2 = 3; + case PSS_MODE_NORMAL: + case PSS_MODE_UNK2: + gUnknown_0203CF1C->minPageIndex = 0; + gUnknown_0203CF1C->maxPageIndex = 3; break; - case 1: - gUnknown_0203CF1C->unk40C1 = 0; - gUnknown_0203CF1C->unk40C2 = 3; + case PSS_MODE_UNK1: + gUnknown_0203CF1C->minPageIndex = 0; + gUnknown_0203CF1C->maxPageIndex = 3; gUnknown_0203CF1C->unk40C8 = TRUE; break; - case 3: - gUnknown_0203CF1C->unk40C1 = 2; - gUnknown_0203CF1C->unk40C2 = 3; + case PSS_MODE_SELECT_MOVE: + gUnknown_0203CF1C->minPageIndex = 2; + gUnknown_0203CF1C->maxPageIndex = 3; gUnknown_0203CF1C->unk40C3 = TRUE; break; } - gUnknown_0203CF1C->unk40C0 = gUnknown_0203CF1C->unk40C1; + gUnknown_0203CF1C->currPageIndex = gUnknown_0203CF1C->minPageIndex; sub_81C488C(-1); if (gMonSpritesGfxPtr == 0) @@ -754,13 +756,13 @@ void sub_81BF8EC(u8 mode, void *mons, u8 monIndex, u8 maxMonIndex, void (*callba void ShowSelectMovePokemonSummaryScreen(struct Pokemon *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void), u16 newMove) { - sub_81BF8EC(3, mons, monIndex, maxMonIndex, callback); + ShowPokemonSummaryScreen(PSS_MODE_SELECT_MOVE, mons, monIndex, maxMonIndex, callback); gUnknown_0203CF1C->newMove = newMove; } -void sub_81BFA80(u8 a, struct BoxPokemon *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void)) +void ShowPokemonSummaryScreenSet40EF(u8 mode, struct BoxPokemon *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void)) { - sub_81BF8EC(a, mons, monIndex, maxMonIndex, callback); + ShowPokemonSummaryScreen(mode, mons, monIndex, maxMonIndex, callback); gUnknown_0203CF1C->unk40EF = TRUE; } @@ -813,7 +815,7 @@ bool8 sub_81BFB10(void) gMain.state++; break; case 5: - sub_81BFE24(); + InitBGs(); gUnknown_0203CF1C->unk40F0 = 0; gMain.state++; break; @@ -830,12 +832,12 @@ bool8 sub_81BFB10(void) gMain.state++; break; case 9: - sub_81C0098(&gUnknown_0203CF1C->currentMon); + CopyMonToSummaryStruct(&gUnknown_0203CF1C->currentMon); gUnknown_0203CF1C->unk40F0 = 0; gMain.state++; break; case 10: - if (sub_81C00F0(&gUnknown_0203CF1C->currentMon) != 0) + if (ExtractMonDataToSummaryStruct(&gUnknown_0203CF1C->currentMon) != 0) gMain.state++; break; case 11: @@ -843,11 +845,11 @@ bool8 sub_81BFB10(void) gMain.state++; break; case 12: - sub_81C286C(); + PrintRentalMonStatsPage(); gMain.state++; break; case 13: - sub_81C2D9C(gUnknown_0203CF1C->unk40C0); + sub_81C2D9C(gUnknown_0203CF1C->currPageIndex); gMain.state++; break; case 14: @@ -855,7 +857,7 @@ bool8 sub_81BFB10(void) gMain.state++; break; case 15: - sub_81C2AFC(gUnknown_0203CF1C->unk40C0); + sub_81C2AFC(gUnknown_0203CF1C->currPageIndex); gMain.state++; break; case 16: @@ -889,7 +891,7 @@ bool8 sub_81BFB10(void) gMain.state++; break; case 22: - if (gUnknown_0203CF1C->mode != 3) + if (gUnknown_0203CF1C->mode != PSS_MODE_SELECT_MOVE) CreateTask(sub_81C0510, 0); else CreateTask(sub_81C171C, 0); @@ -912,7 +914,7 @@ bool8 sub_81BFB10(void) return FALSE; } -void sub_81BFE24(void) +static void InitBGs(void) { ResetBgsAndClearDma3BusyFlags(0); InitBgsFromTemplates(0, gUnknown_0861CBB4, ARRAY_COUNT(gUnknown_0861CBB4)); @@ -996,7 +998,7 @@ bool8 sub_81BFEB0(void) return FALSE; } -void sub_81C0098(struct Pokemon *mon) +void CopyMonToSummaryStruct(struct Pokemon *mon) { if (!gUnknown_0203CF1C->isBoxMon) { @@ -1010,7 +1012,7 @@ void sub_81C0098(struct Pokemon *mon) } } -bool8 sub_81C00F0(struct Pokemon *a) +bool8 ExtractMonDataToSummaryStruct(struct Pokemon *a) { u32 i; struct PokeSummary *sum = &gUnknown_0203CF1C->summary; @@ -1025,10 +1027,12 @@ bool8 sub_81C00F0(struct Pokemon *a) sum->item = GetMonData(a, MON_DATA_HELD_ITEM); sum->pid = GetMonData(a, MON_DATA_PERSONALITY); sum->sanity = GetMonData(a, MON_DATA_SANITY_BIT1); - if (sum->sanity != 0) - sum->isEgg = 1; + + if (sum->sanity) + sum->isEgg = TRUE; else sum->isEgg = GetMonData(a, MON_DATA_IS_EGG); + break; case 1: for (i = 0; i < 4; i++) @@ -1039,7 +1043,7 @@ bool8 sub_81C00F0(struct Pokemon *a) sum->ppBonuses = GetMonData(a, MON_DATA_PP_BONUSES); break; case 2: - if (gUnknown_0203CF1C->monList.mons == gPlayerParty || gUnknown_0203CF1C->mode == 2 || gUnknown_0203CF1C->unk40EF == TRUE) + if (gUnknown_0203CF1C->monList.mons == gPlayerParty || gUnknown_0203CF1C->mode == PSS_MODE_UNK2 || gUnknown_0203CF1C->unk40EF == TRUE) { sum->nature = GetNature(a); sum->currentHP = GetMonData(a, MON_DATA_HP); @@ -1074,7 +1078,7 @@ bool8 sub_81C00F0(struct Pokemon *a) sum->friendship = GetMonData(a, MON_DATA_FRIENDSHIP); break; default: - sum->ribbons = GetMonData(a, MON_DATA_RIBBON_COUNT); + sum->ribbonCount = GetMonData(a, MON_DATA_RIBBON_COUNT); return TRUE; } gUnknown_0203CF1C->unk40F0++; @@ -1083,7 +1087,7 @@ bool8 sub_81C00F0(struct Pokemon *a) void sub_81C0348(void) { - if (gUnknown_0203CF1C->unk40C0 != 2 && gUnknown_0203CF1C->unk40C0 != 3) + if (gUnknown_0203CF1C->currPageIndex != 2 && gUnknown_0203CF1C->currPageIndex != 3) { sub_81C1DA4(0, 255); sub_81C1EFC(0, 255, 0); @@ -1105,7 +1109,7 @@ void sub_81C0348(void) } else { - if (gUnknown_0203CF1C->unk40C0 != 2 && gUnknown_0203CF1C->unk40C0 != 3) + if (gUnknown_0203CF1C->currPageIndex != 2 && gUnknown_0203CF1C->currPageIndex != 3) PutWindowTilemap(13); } sub_81C2524(); @@ -1130,7 +1134,7 @@ void sub_81C0484(u8 taskId) { SetMainCallback2(gUnknown_0203CF1C->callback); gUnknown_0203CF20 = gUnknown_0203CF1C->curMonIndex; - sub_81C4898(); + DestoryUnusedTask(); ResetSpriteData(); FreeAllSpritePalettes(); StopCryAndClearCrySongs(); @@ -1164,9 +1168,9 @@ void sub_81C0510(u8 taskId) } else if (gMain.newKeys & A_BUTTON) { - if (gUnknown_0203CF1C->unk40C0 != 1) + if (gUnknown_0203CF1C->currPageIndex != 1) { - if (gUnknown_0203CF1C->unk40C0 == 0) + if (gUnknown_0203CF1C->currPageIndex == 0) { sub_81C48F0(); PlaySE(SE_SELECT); @@ -1196,7 +1200,7 @@ void sub_81C0604(u8 taskId, s8 a) { if (gUnknown_0203CF1C->isBoxMon == TRUE) { - if (gUnknown_0203CF1C->unk40C0 != 0) + if (gUnknown_0203CF1C->currPageIndex != 0) { if (a == 1) a = 0; @@ -1227,7 +1231,7 @@ void sub_81C0604(u8 taskId, s8 a) if (gUnknown_0203CF1C->summary.unk7 != 0) { sub_81C4204(2, 1); - ClearWindowTilemap(0xD); + ClearWindowTilemap(13); schedule_bg_copy_tilemap_to_vram(0); sub_81C2074(0, 2); } @@ -1248,18 +1252,18 @@ void sub_81C0704(u8 taskId) StopCryAndClearCrySongs(); break; case 1: - sub_81C4898(); + DestoryUnusedTask(); DestroySpriteAndFreeResources(&gSprites[gUnknown_0203CF1C->spriteIds[0]]); break; case 2: DestroySpriteAndFreeResources(&gSprites[gUnknown_0203CF1C->spriteIds[1]]); break; case 3: - sub_81C0098(&gUnknown_0203CF1C->currentMon); + CopyMonToSummaryStruct(&gUnknown_0203CF1C->currentMon); gUnknown_0203CF1C->unk40F0 = 0; break; case 4: - if (sub_81C00F0(&gUnknown_0203CF1C->currentMon) == FALSE) + if (ExtractMonDataToSummaryStruct(&gUnknown_0203CF1C->currentMon) == FALSE) return; break; case 5: @@ -1289,7 +1293,7 @@ void sub_81C0704(u8 taskId) sub_81C25E8(); break; case 11: - sub_81C2D9C(gUnknown_0203CF1C->unk40C0); + sub_81C2D9C(gUnknown_0203CF1C->currPageIndex); sub_81C2524(); break; case 12: @@ -1310,7 +1314,7 @@ s8 sub_81C08F8(s8 a) { struct Pokemon *mon = gUnknown_0203CF1C->monList.mons; - if (gUnknown_0203CF1C->unk40C0 == 0) + if (gUnknown_0203CF1C->currPageIndex == 0) { if (a == -1 && gUnknown_0203CF1C->curMonIndex == 0) return -1; @@ -1378,20 +1382,20 @@ void sub_81C0A8C(u8 taskId, s8 b) if (summary->isEgg) return; - else if (b == -1 && gUnknown_0203CF1C->unk40C0 == gUnknown_0203CF1C->unk40C1) + else if (b == -1 && gUnknown_0203CF1C->currPageIndex == gUnknown_0203CF1C->minPageIndex) return; - else if (b == 1 && gUnknown_0203CF1C->unk40C0 == gUnknown_0203CF1C->unk40C2) + else if (b == 1 && gUnknown_0203CF1C->currPageIndex == gUnknown_0203CF1C->maxPageIndex) return; PlaySE(SE_SELECT); - sub_81C2C38(gUnknown_0203CF1C->unk40C0); - gUnknown_0203CF1C->unk40C0 += b; + sub_81C2C38(gUnknown_0203CF1C->currPageIndex); + gUnknown_0203CF1C->currPageIndex += b; data[0] = 0; if (b == 1) SetTaskFuncWithFollowupFunc(taskId, sub_81C0B8C, gTasks[taskId].func); else SetTaskFuncWithFollowupFunc(taskId, sub_81C0CC4, gTasks[taskId].func); - sub_81C2DE4(gUnknown_0203CF1C->unk40C0); + sub_81C2DE4(gUnknown_0203CF1C->currPageIndex); sub_81C424C(); } @@ -1415,7 +1419,7 @@ void sub_81C0B8C(u8 taskId) schedule_bg_copy_tilemap_to_vram(2); } ChangeBgX(data[1], 0, 0); - SetBgTilemapBuffer(data[1], (u8*)gUnknown_0203CF1C + ((gUnknown_0203CF1C->unk40C0 << 12) + 0xBC)); + SetBgTilemapBuffer(data[1], (u8*)gUnknown_0203CF1C + ((gUnknown_0203CF1C->currPageIndex << 12) + 0xBC)); ShowBg(1); ShowBg(2); } @@ -1432,7 +1436,7 @@ void sub_81C0C68(u8 taskId) data[1] = 0; data[0] = 0; sub_81C1BA0(); - sub_81C2AFC(gUnknown_0203CF1C->unk40C0); + sub_81C2AFC(gUnknown_0203CF1C->currPageIndex); sub_81C4280(); sub_81C0E24(); SwitchTaskToFollowupFunc(taskId); @@ -1470,9 +1474,9 @@ void sub_81C0D44(u8 taskId) SetBgAttribute(1, 7, 2); schedule_bg_copy_tilemap_to_vram(1); } - if (gUnknown_0203CF1C->unk40C0 > 1) + if (gUnknown_0203CF1C->currPageIndex > 1) { - SetBgTilemapBuffer(data[1], (u8*)gUnknown_0203CF1C + ((gUnknown_0203CF1C->unk40C0 << 12) + 0xFFFFF0BC)); + SetBgTilemapBuffer(data[1], (u8*)gUnknown_0203CF1C + ((gUnknown_0203CF1C->currPageIndex << 12) + 0xFFFFF0BC)); ChangeBgX(data[1], 0x10000, 0); } ShowBg(1); @@ -1481,7 +1485,7 @@ void sub_81C0D44(u8 taskId) data[1] = 0; data[0] = 0; sub_81C1BA0(); - sub_81C2AFC(gUnknown_0203CF1C->unk40C0); + sub_81C2AFC(gUnknown_0203CF1C->currPageIndex); sub_81C4280(); sub_81C0E24(); SwitchTaskToFollowupFunc(taskId); @@ -1489,7 +1493,7 @@ void sub_81C0D44(u8 taskId) void sub_81C0E24(void) { - if (gUnknown_0203CF1C->unk40C0 == 1) + if (gUnknown_0203CF1C->currPageIndex == 1) sub_81C22CC(&gUnknown_0203CF1C->currentMon); } @@ -1511,7 +1515,7 @@ void sub_81C0E48(u8 taskId) sub_81C2194(&gUnknown_0203CF1C->bgTilemapBuffer3[0], 3, 0); sub_81C2194(&gUnknown_0203CF1C->bgTilemapBuffer4[0], 1, 0); sub_81C3E9C(move); - sub_81C3F44(); + PrintNewMoveDetailsOrCancelText(); sub_81C44F0(); schedule_bg_copy_tilemap_to_vram(0); schedule_bg_copy_tilemap_to_vram(1); @@ -1658,9 +1662,9 @@ void sub_81C129C(u8 taskId) void sub_81C12E4(u8 taskId) { - u8 a = taskId; s16* data = gTasks[taskId].data; - if (sub_81221EC() != 1) + + if (sub_81221EC() != TRUE) { if (gMain.newKeys & DPAD_UP) { @@ -1679,20 +1683,26 @@ void sub_81C12E4(u8 taskId) sub_81C13B0(taskId, 0); } else + { sub_81C13B0(taskId, 1); + } } else if (gMain.newKeys & B_BUTTON) - sub_81C13B0(a, 0); + { + sub_81C13B0(taskId, 0); + } } } -void sub_81C13B0(u8 taskId, u8 b) +void sub_81C13B0(u8 taskId, bool8 b) { u16 move; + PlaySE(SE_SELECT); sub_81C4C84(0); sub_81C4C60(18); - if (b == 1) + + if (b == TRUE) { if (!gUnknown_0203CF1C->isBoxMon) { @@ -1704,11 +1714,12 @@ void sub_81C13B0(u8 taskId, u8 b) struct BoxPokemon *why = gUnknown_0203CF1C->monList.boxMons; sub_81C15EC(&why[gUnknown_0203CF1C->curMonIndex], gUnknown_0203CF1C->firstMoveIndex, gUnknown_0203CF1C->secondMoveIndex); } - sub_81C0098(&gUnknown_0203CF1C->currentMon); + CopyMonToSummaryStruct(&gUnknown_0203CF1C->currentMon); sub_81C40A0(gUnknown_0203CF1C->firstMoveIndex, gUnknown_0203CF1C->secondMoveIndex); sub_81C4568(gUnknown_0203CF1C->firstMoveIndex, gUnknown_0203CF1C->secondMoveIndex); gUnknown_0203CF1C->firstMoveIndex = gUnknown_0203CF1C->secondMoveIndex; } + move = gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->firstMoveIndex]; sub_81C3E9C(move); sub_81C240C(move); @@ -2245,7 +2256,7 @@ void sub_81C1940(u8 taskId) } else if (gMain.newKeys & DPAD_LEFT || GetLRKeysState() == 1) { - if (gUnknown_0203CF1C->unk40C0 != 2) + if (gUnknown_0203CF1C->currPageIndex != 2) { ClearWindowTilemap(19); if (!gSprites[gUnknown_0203CF1C->spriteIds[2]].invisible) @@ -2259,7 +2270,7 @@ void sub_81C1940(u8 taskId) } else if (gMain.newKeys & DPAD_RIGHT || GetLRKeysState() == 2) { - if (gUnknown_0203CF1C->unk40C0 != 3) + if (gUnknown_0203CF1C->currPageIndex != 3) { ClearWindowTilemap(19); if (!gSprites[gUnknown_0203CF1C->spriteIds[2]].invisible) @@ -2298,30 +2309,30 @@ void sub_81C1BA0(void) for (i = 0; i < 4; i++) { u8 j = i << 1; - if (i < gUnknown_0203CF1C->unk40C1) + if (i < gUnknown_0203CF1C->minPageIndex) { alloced[j+0] = 0x40; alloced[j+1] = 0x40; alloced[j+8] = 0x50; alloced[j+9] = 0x50; } - else if (i > gUnknown_0203CF1C->unk40C2) + else if (i > gUnknown_0203CF1C->maxPageIndex) { alloced[j+0] = 0x4A; alloced[j+1] = 0x4A; alloced[j+8] = 0x5A; alloced[j+9] = 0x5A; } - else if (i < gUnknown_0203CF1C->unk40C0) + else if (i < gUnknown_0203CF1C->currPageIndex) { alloced[j+0] = 0x46; alloced[j+1] = 0x47; alloced[j+8] = 0x56; alloced[j+9] = 0x57; } - else if (i == gUnknown_0203CF1C->unk40C0) + else if (i == gUnknown_0203CF1C->currPageIndex) { - if (i != gUnknown_0203CF1C->unk40C2) + if (i != gUnknown_0203CF1C->maxPageIndex) { alloced[j+0] = 0x41; alloced[j+1] = 0x42; @@ -2336,7 +2347,7 @@ void sub_81C1BA0(void) alloced[j+9] = 0x5C; } } - else if (i != gUnknown_0203CF1C->unk40C2) + else if (i != gUnknown_0203CF1C->maxPageIndex) { alloced[j+0] = 0x43; alloced[j+1] = 0x44; @@ -2422,7 +2433,7 @@ void sub_81C1E20(u8 taskId) { if (data[0] < 0) { - if (gUnknown_0203CF1C->unk40C0 == 2) + if (gUnknown_0203CF1C->currPageIndex == 2) PutWindowTilemap(14); } else @@ -2472,7 +2483,7 @@ void sub_81C1F80(u8 taskId) { if (data[0] < 0) { - if (gUnknown_0203CF1C->unk40C0 == 3 && FuncIsActiveTask(sub_81C0B8C) == 0) + if (gUnknown_0203CF1C->currPageIndex == 3 && FuncIsActiveTask(sub_81C0B8C) == 0) PutWindowTilemap(15); sub_81C240C(data[2]); } @@ -2573,9 +2584,9 @@ void sub_81C2228(struct Pokemon *mon) schedule_bg_copy_tilemap_to_vram(3); } -void sub_81C228C(u8 a) +void sub_81C228C(bool8 isMonShiny) { - if (a == 0) + if (!isMonShiny) sub_8199C30(3, 1, 4, 8, 8, 0); else sub_8199C30(3, 1, 4, 8, 8, 5); @@ -2623,41 +2634,51 @@ void sub_81C22CC(struct Pokemon *unused) void sub_81C240C(u16 move) { - u16* r5 = &gUnknown_0203CF1C->bgTilemapBuffer4[0x400]; + u16* tilemap = &gUnknown_0203CF1C->bgTilemapBuffer4[0x400]; u8 i; - u8 r4; + u8 effectValue; + if (move != MOVE_NONE) { - r4 = gContestEffects[gContestMoves[move].effect].appeal; - if (r4 != 0xFF) - r4 /= 10; - for (i = 0;i < 8; i++) + effectValue = gContestEffects[gContestMoves[move].effect].appeal; + + if (effectValue != 0xFF) + effectValue /= 10; + + for (i = 0; i < 8; i++) { - if (r4 != 0xFF && i < r4) + if (effectValue != 0xFF && i < effectValue) { - r5[((i>>2)*32)+(i&3)+0x1E6] = 0x103A; + tilemap[(i / 4 * 32) + (i & 3) + 0x1E6] = 0x103A; } else - r5[((i>>2)*32)+(i&3)+0x1E6] = 0x1039; + { + tilemap[(i / 4 * 32) + (i & 3) + 0x1E6] = 0x1039; + } } - r4 = gContestEffects[gContestMoves[move].effect].jam; - if (r4 != 0xFF) - r4 /= 10; - for (i = 0;i < 8; i++) + + effectValue = gContestEffects[gContestMoves[move].effect].jam; + + if (effectValue != 0xFF) + effectValue /= 10; + + for (i = 0; i < 8; i++) { - if (r4 != 0xFF && i < r4) + if (effectValue != 0xFF && i < effectValue) { - r5[((i>>2)*32)+(i&3)+0x226] = 0x103C; + tilemap[(i / 4 * 32) + (i & 3) + 0x226] = 0x103C; } else - r5[((i>>2)*32)+(i&3)+0x226] = 0x103D; + { + tilemap[(i / 4 * 32) + (i & 3) + 0x226] = 0x103D; + } } } } void sub_81C2524(void) { - if (gUnknown_0203CF1C->summary.isEgg != 0) + if (gUnknown_0203CF1C->summary.isEgg) ChangeBgX(3, 0x10000, 0); else ChangeBgX(3, 0, 0); @@ -2668,15 +2689,20 @@ void sub_81C2554(void) u8 i; InitWindows(gUnknown_0861CC24); DeactivateAllTextPrinters(); + for (i = 0; i < 20; i++) + { FillWindowPixelBuffer(i, 0); + } for (i = 0; i < 8; i++) - gUnknown_0203CF1C->windowIds[i] |= 0xFF; + { + gUnknown_0203CF1C->windowIds[i] = 0xFF; + } } -void sub_81C25A4(u8 a, const u8 *b, u8 c, u8 d, u8 e, u8 f) +static void SummaryScreen_PrintTextOnWindow(u8 windowId, const u8 *string, u8 x, u8 y, u8 lineSpacing, u8 colorId) { - AddTextPrinterParameterized2(a, 1, c, d, 0, e, sTextColors_861CD2C[f], 0, b); + AddTextPrinterParameterized2(windowId, 1, x, y, 0, lineSpacing, sTextColors_861CD2C[colorId], 0, string); } void sub_81C25E8(void) @@ -2684,7 +2710,7 @@ void sub_81C25E8(void) FillWindowPixelBuffer(17, 0); FillWindowPixelBuffer(18, 0); FillWindowPixelBuffer(19, 0); - if (gUnknown_0203CF1C->summary.isEgg == 0) + if (!gUnknown_0203CF1C->summary.isEgg) sub_81C2628(); else sub_81C2794(); @@ -2696,41 +2722,41 @@ void sub_81C2628(void) u8 strArray[16]; struct Pokemon *mon = &gUnknown_0203CF1C->currentMon; struct PokeSummary *summary = &gUnknown_0203CF1C->summary; - u16 r5 = SpeciesToPokedexNum(summary->species); - if (r5 != 0xFFFF) + u16 dexNum = SpeciesToPokedexNum(summary->species); + if (dexNum != 0xFFFF) { StringCopy(gStringVar1, &gText_UnkCtrlF908Clear01[0]); - ConvertIntToDecimalStringN(gStringVar2, r5, 2, 3); + ConvertIntToDecimalStringN(gStringVar2, dexNum, 2, 3); StringAppend(gStringVar1, gStringVar2); - if (IsMonShiny(mon) == 0) + if (!IsMonShiny(mon)) { - sub_81C25A4(17, gStringVar1, 0, 1, 0, 1); - sub_81C228C(0); + SummaryScreen_PrintTextOnWindow(17, gStringVar1, 0, 1, 0, 1); + sub_81C228C(FALSE); } else { - sub_81C25A4(17, gStringVar1, 0, 1, 0, 7); - sub_81C228C(1); + SummaryScreen_PrintTextOnWindow(17, gStringVar1, 0, 1, 0, 7); + sub_81C228C(TRUE); } PutWindowTilemap(17); } else { ClearWindowTilemap(17); - if (IsMonShiny(mon) == 0) - sub_81C228C(0); + if (!IsMonShiny(mon)) + sub_81C228C(FALSE); else - sub_81C228C(1); + sub_81C228C(TRUE); } StringCopy(gStringVar1, &gText_LevelSymbol[0]); ConvertIntToDecimalStringN(gStringVar2, summary->level, 0, 3); StringAppend(gStringVar1, gStringVar2); - sub_81C25A4(19, gStringVar1, 0x18, 17, 0, 1); + SummaryScreen_PrintTextOnWindow(19, gStringVar1, 0x18, 17, 0, 1); GetMonNickname(mon, gStringVar1); - sub_81C25A4(18, gStringVar1, 0, 1, 0, 1); + SummaryScreen_PrintTextOnWindow(18, gStringVar1, 0, 1, 0, 1); strArray[0] = CHAR_SLASH; StringCopy(&strArray[1], &gSpeciesNames[summary->species2][0]); - sub_81C25A4(19, &strArray[0], 0, 1, 0, 1); + SummaryScreen_PrintTextOnWindow(19, &strArray[0], 0, 1, 0, 1); sub_81C27DC(mon, summary->species2); PutWindowTilemap(18); PutWindowTilemap(19); @@ -2739,7 +2765,7 @@ void sub_81C2628(void) void sub_81C2794(void) { GetMonNickname(&gUnknown_0203CF1C->currentMon, gStringVar1); - sub_81C25A4(18, gStringVar1, 0, 1, 0, 1); + SummaryScreen_PrintTextOnWindow(18, gStringVar1, 0, 1, 0, 1); PutWindowTilemap(18); ClearWindowTilemap(17); ClearWindowTilemap(19); @@ -2753,74 +2779,73 @@ void sub_81C27DC(struct Pokemon *mon, u16 a) switch (gender) { case 0: - sub_81C25A4(0x13, &gText_MaleSymbol[0], 0x39, 17, 0, 3); + SummaryScreen_PrintTextOnWindow(19, &gText_MaleSymbol[0], 57, 17, 0, 3); break; case 0xFE: - sub_81C25A4(0x13, &gText_FemaleSymbol[0], 0x39, 17, 0, 4); + SummaryScreen_PrintTextOnWindow(19, &gText_FemaleSymbol[0], 57, 17, 0, 4); break; } } } -void sub_81C2838(u8 a, bool8 b, u32 c) -{ - BlitBitmapToWindow(a, (b) ? &gUnknown_0861CDD3[0] : &gUnknown_0861CDD3[0] - 0x80, c, 0, 16, 16); -} - -void sub_81C286C(void) -{ - int r4; - int r2; - int temp; - sub_81C25A4(0, gText_PkmnInfo, 2, 1, 0, 1); - sub_81C25A4(1, gText_PkmnSkills, 2, 1, 0, 1); - sub_81C25A4(2, gText_BattleMoves, 2, 1, 0, 1); - sub_81C25A4(3, gText_ContestMoves, 2, 1, 0, 1); - r4 = GetStringRightAlignXOffset(1, gText_Cancel2, 0x3E); - r2 = r4 - 16; - if (r2 < 0) - r2 = 0; - sub_81C2838(4, 0, r2); - sub_81C25A4(4, gText_Cancel2, r4, 1, 0, 0); - r4 = GetStringRightAlignXOffset(1, gText_Info, 0x3E); - r2 = r4 - 16; - if (r2 < 0) - r2 = 0; - sub_81C2838(5, 0, r2); - sub_81C25A4(5, gText_Info, r4, 1, 0, 0); - r4 = GetStringRightAlignXOffset(1, gText_Switch, 0x3E); - r2 = r4 - 16; - if (r2 < 0) - r2 = 0; - sub_81C2838(6, 0, r2); - sub_81C25A4(6, gText_Switch, r4, 1, 0, 0); - sub_81C25A4(8, gText_RentalPkmn, 0, 1, 0, 1); - sub_81C25A4(9, gText_TypeSlash, 0, 1, 0, 0); - temp = 6; - temp += GetStringCenterAlignXOffset(1, gText_HP4, 42); - sub_81C25A4(10, gText_HP4, temp, 1, 0, 1); - temp = 6; - temp += GetStringCenterAlignXOffset(1, gText_Attack3, 42); - sub_81C25A4(10, gText_Attack3, temp, 17, 0, 1); - temp = 6; - temp += GetStringCenterAlignXOffset(1, gText_Defense3, 42); - sub_81C25A4(10, gText_Defense3, temp, 33, 0, 1); - temp = 2; - temp += GetStringCenterAlignXOffset(1, gText_SpAtk4, 36); - sub_81C25A4(11, gText_SpAtk4, temp, 1, 0, 1); - temp = 2; - temp += GetStringCenterAlignXOffset(1, gText_SpDef4, 36); - sub_81C25A4(11, gText_SpDef4, temp, 17, 0, 1); - temp = 2; - temp += GetStringCenterAlignXOffset(1, gText_Speed2, 36); - sub_81C25A4(11, gText_Speed2, temp, 33, 0, 1); - sub_81C25A4(12, gText_ExpPoints, 6, 1, 0, 1); - sub_81C25A4(12, gText_NextLv, 6, 17, 0, 1); - sub_81C25A4(13, gText_Status, 2, 1, 0, 1); - sub_81C25A4(14, gText_Power, 0, 1, 0, 1); - sub_81C25A4(14, gText_Accuracy2, 0, 17, 0, 1); - sub_81C25A4(15, gText_Appeal, 0, 1, 0, 1); - sub_81C25A4(15, gText_Jam, 0, 17, 0, 1); +void PrintAOrBButtonIcon(u8 windowId, bool8 bButton, u32 x) +{ + BlitBitmapToWindow(windowId, (bButton) ? gUnknown_0861CDD3 : gUnknown_0861CDD3 - 0x80, x, 0, 16, 16); +} + +void PrintRentalMonStatsPage(void) +{ + int stringXPos; + int iconXPos; + int statsXPos; + + SummaryScreen_PrintTextOnWindow(0, gText_PkmnInfo, 2, 1, 0, 1); + SummaryScreen_PrintTextOnWindow(1, gText_PkmnSkills, 2, 1, 0, 1); + SummaryScreen_PrintTextOnWindow(2, gText_BattleMoves, 2, 1, 0, 1); + SummaryScreen_PrintTextOnWindow(3, gText_ContestMoves, 2, 1, 0, 1); + + stringXPos = GetStringRightAlignXOffset(1, gText_Cancel2, 0x3E); + iconXPos = stringXPos - 16; + if (iconXPos < 0) + iconXPos = 0; + PrintAOrBButtonIcon(4, FALSE, iconXPos); + SummaryScreen_PrintTextOnWindow(4, gText_Cancel2, stringXPos, 1, 0, 0); + + stringXPos = GetStringRightAlignXOffset(1, gText_Info, 0x3E); + iconXPos = stringXPos - 16; + if (iconXPos < 0) + iconXPos = 0; + PrintAOrBButtonIcon(5, FALSE, iconXPos); + SummaryScreen_PrintTextOnWindow(5, gText_Info, stringXPos, 1, 0, 0); + + stringXPos = GetStringRightAlignXOffset(1, gText_Switch, 0x3E); + iconXPos = stringXPos - 16; + if (iconXPos < 0) + iconXPos = 0; + PrintAOrBButtonIcon(6, FALSE, iconXPos); + SummaryScreen_PrintTextOnWindow(6, gText_Switch, stringXPos, 1, 0, 0); + + SummaryScreen_PrintTextOnWindow(8, gText_RentalPkmn, 0, 1, 0, 1); + SummaryScreen_PrintTextOnWindow(9, gText_TypeSlash, 0, 1, 0, 0); + statsXPos = 6 + GetStringCenterAlignXOffset(1, gText_HP4, 42); + SummaryScreen_PrintTextOnWindow(10, gText_HP4, statsXPos, 1, 0, 1); + statsXPos = 6 + GetStringCenterAlignXOffset(1, gText_Attack3, 42); + SummaryScreen_PrintTextOnWindow(10, gText_Attack3, statsXPos, 17, 0, 1); + statsXPos = 6 + GetStringCenterAlignXOffset(1, gText_Defense3, 42); + SummaryScreen_PrintTextOnWindow(10, gText_Defense3, statsXPos, 33, 0, 1); + statsXPos = 2 + GetStringCenterAlignXOffset(1, gText_SpAtk4, 36); + SummaryScreen_PrintTextOnWindow(11, gText_SpAtk4, statsXPos, 1, 0, 1); + statsXPos = 2 + GetStringCenterAlignXOffset(1, gText_SpDef4, 36); + SummaryScreen_PrintTextOnWindow(11, gText_SpDef4, statsXPos, 17, 0, 1); + statsXPos = 2 + GetStringCenterAlignXOffset(1, gText_Speed2, 36); + SummaryScreen_PrintTextOnWindow(11, gText_Speed2, statsXPos, 33, 0, 1); + SummaryScreen_PrintTextOnWindow(12, gText_ExpPoints, 6, 1, 0, 1); + SummaryScreen_PrintTextOnWindow(12, gText_NextLv, 6, 17, 0, 1); + SummaryScreen_PrintTextOnWindow(13, gText_Status, 2, 1, 0, 1); + SummaryScreen_PrintTextOnWindow(14, gText_Power, 0, 1, 0, 1); + SummaryScreen_PrintTextOnWindow(14, gText_Accuracy2, 0, 17, 0, 1); + SummaryScreen_PrintTextOnWindow(15, gText_Appeal, 0, 1, 0, 1); + SummaryScreen_PrintTextOnWindow(15, gText_Jam, 0, 17, 0, 1); } void sub_81C2AFC(u8 a) @@ -2847,23 +2872,27 @@ void sub_81C2AFC(u8 a) break; case 2: PutWindowTilemap(2); - if (gUnknown_0203CF1C->mode == 3) + if (gUnknown_0203CF1C->mode == PSS_MODE_SELECT_MOVE) { - if(!(gUnknown_0203CF1C->newMove == MOVE_NONE && gUnknown_0203CF1C->firstMoveIndex == MAX_MON_MOVES)) + if (gUnknown_0203CF1C->newMove != MOVE_NONE || gUnknown_0203CF1C->firstMoveIndex != MAX_MON_MOVES) PutWindowTilemap(14); } else + { PutWindowTilemap(5); + } break; case 3: PutWindowTilemap(3); - if (gUnknown_0203CF1C->mode == 3) + if (gUnknown_0203CF1C->mode == PSS_MODE_SELECT_MOVE) { - if(!(gUnknown_0203CF1C->newMove == MOVE_NONE && gUnknown_0203CF1C->firstMoveIndex == MAX_MON_MOVES)) + if (gUnknown_0203CF1C->newMove != MOVE_NONE || gUnknown_0203CF1C->firstMoveIndex != MAX_MON_MOVES) PutWindowTilemap(15); } else + { PutWindowTilemap(5); + } break; } for (i = 0; i < 8; i++) @@ -2890,22 +2919,26 @@ void sub_81C2C38(u8 a) ClearWindowTilemap(12); break; case 2: - if (gUnknown_0203CF1C->mode == 3) + if (gUnknown_0203CF1C->mode == PSS_MODE_SELECT_MOVE) { - if(!(gUnknown_0203CF1C->newMove == MOVE_NONE && gUnknown_0203CF1C->firstMoveIndex == MAX_MON_MOVES)) + if (gUnknown_0203CF1C->newMove != MOVE_NONE || gUnknown_0203CF1C->firstMoveIndex != MAX_MON_MOVES) ClearWindowTilemap(14); } else + { ClearWindowTilemap(5); + } break; case 3: - if (gUnknown_0203CF1C->mode == 3) + if (gUnknown_0203CF1C->mode == PSS_MODE_SELECT_MOVE) { - if(!(gUnknown_0203CF1C->newMove == MOVE_NONE && gUnknown_0203CF1C->firstMoveIndex == MAX_MON_MOVES)) + if (gUnknown_0203CF1C->newMove != MOVE_NONE || gUnknown_0203CF1C->firstMoveIndex != MAX_MON_MOVES) ClearWindowTilemap(15); } else + { ClearWindowTilemap(5); + } break; } for (i = 0; i < 8; i++) @@ -2913,12 +2946,12 @@ void sub_81C2C38(u8 a) schedule_bg_copy_tilemap_to_vram(0); } -u8 sub_81C2D2C(const struct WindowTemplate *template, u8 a) +u8 AddWindowFromTemplateList(const struct WindowTemplate *template, u8 templateId) { - u8 *windowIdPtr = &(gUnknown_0203CF1C->windowIds[a]); + u8 *windowIdPtr = &(gUnknown_0203CF1C->windowIds[templateId]); if (*windowIdPtr == 0xFF) { - *windowIdPtr = AddWindow(&template[a]); + *windowIdPtr = AddWindow(&template[templateId]); FillWindowPixelBuffer(*windowIdPtr, 0); } return *windowIdPtr; @@ -2935,7 +2968,7 @@ void sub_81C2D68(u8 a) } } -void sub_81C2D9C(u8 a) +void sub_81C2D9C(u8 pageIndex) { u16 i; for (i = 0; i < 8; i++) @@ -2943,209 +2976,219 @@ void sub_81C2D9C(u8 a) if (gUnknown_0203CF1C->windowIds[i] != 0xFF) FillWindowPixelBuffer(gUnknown_0203CF1C->windowIds[i], 0); } - gUnknown_0861CE54[a](); + gUnknown_0861CE54[pageIndex](); } -void sub_81C2DE4(u8 a) +void sub_81C2DE4(u8 pageIndex) { - CreateTask(gUnknown_0861CE64[a], 16); + CreateTask(gUnknown_0861CE64[pageIndex], 16); } void sub_81C2E00(void) { if (gUnknown_0203CF1C->summary.isEgg) { - sub_81C335C(); - sub_81C33CC(); - sub_81C3428(); - sub_81C349C(); + PrintEggOTName(); + PrintEggOTID(); + PrintEggState(); + PrintEggMemo(); } else { - sub_81C2EC4(); - sub_81C2F5C(); - sub_81C2FD8(); - sub_81C302C(); - sub_81C307C(); - sub_81C3194(); + PrintMonOTName(); + PrintMonOTID(); + PrintMonAbilityName(); + PrintMonAbilityDescription(); + BufferMonTrainerMemo(); + PrintMonTrainerMemo(); } } void sub_81C2E40(u8 taskId) { s16 *data = gTasks[taskId].data; - s16 dataa = data[0] - 1; - switch (dataa) + switch (data[0]) { - case 0: - sub_81C2EC4(); - break; case 1: - sub_81C2F5C(); + PrintMonOTName(); break; case 2: - sub_81C2FD8(); + PrintMonOTID(); break; case 3: - sub_81C302C(); + PrintMonAbilityName(); break; case 4: - sub_81C307C(); + PrintMonAbilityDescription(); break; case 5: - sub_81C3194(); + BufferMonTrainerMemo(); break; case 6: + PrintMonTrainerMemo(); + break; + case 7: DestroyTask(taskId); return; } data[0]++; } -void sub_81C2EC4(void) +void PrintMonOTName(void) { - u8 r5; - int r2; - if (sub_81A6BF4() != 1 && sub_81B9E94() != 1) + u8 windowId; + int x; + if (sub_81A6BF4() != TRUE && sub_81B9E94() != TRUE) { - r5 = sub_81C2D2C(gUnknown_0861CCCC, 0); - sub_81C25A4(r5, gText_OTSlash, 0, 1, 0, 1); - r2 = GetStringWidth(1, gText_OTSlash, 0); + windowId = AddWindowFromTemplateList(gUnknown_0861CCCC, 0); + SummaryScreen_PrintTextOnWindow(windowId, gText_OTSlash, 0, 1, 0, 1); + x = GetStringWidth(1, gText_OTSlash, 0); if (gUnknown_0203CF1C->summary.OTGender == 0) - sub_81C25A4(r5, gUnknown_0203CF1C->summary.OTName, r2, 1, 0, 5); + SummaryScreen_PrintTextOnWindow(windowId, gUnknown_0203CF1C->summary.OTName, x, 1, 0, 5); else - sub_81C25A4(r5, gUnknown_0203CF1C->summary.OTName, r2, 1, 0, 6); + SummaryScreen_PrintTextOnWindow(windowId, gUnknown_0203CF1C->summary.OTName, x, 1, 0, 6); } } -void sub_81C2F5C(void) +void PrintMonOTID(void) { - int r4; + int xPos; if (sub_81A6BF4() != TRUE && sub_81B9E94() != TRUE) { ConvertIntToDecimalStringN(StringCopy(gStringVar1, gText_UnkCtrlF907F908), (u16)gUnknown_0203CF1C->summary.OTID, 2, 5); - r4 = GetStringRightAlignXOffset(1, gStringVar1, 0x38); - sub_81C25A4(sub_81C2D2C(gUnknown_0861CCCC, 1), gStringVar1, r4, 1, 0, 1); + xPos = GetStringRightAlignXOffset(1, gStringVar1, 56); + SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCCC, 1), gStringVar1, xPos, 1, 0, 1); } } -void sub_81C2FD8(void) +void PrintMonAbilityName(void) { u8 ability = GetAbilityBySpecies(gUnknown_0203CF1C->summary.species, gUnknown_0203CF1C->summary.altAbility); - sub_81C25A4(sub_81C2D2C(gUnknown_0861CCCC, 2), gAbilityNames[ability], 0, 1, 0, 1); + SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCCC, 2), gAbilityNames[ability], 0, 1, 0, 1); } -void sub_81C302C(void) +void PrintMonAbilityDescription(void) { u8 ability = GetAbilityBySpecies(gUnknown_0203CF1C->summary.species, gUnknown_0203CF1C->summary.altAbility); - sub_81C25A4(sub_81C2D2C(gUnknown_0861CCCC, 2), gAbilityDescriptionPointers[ability], 0, 17, 0, 0); + SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCCC, 2), gAbilityDescriptionPointers[ability], 0, 17, 0, 0); } -void sub_81C307C(void) +void BufferMonTrainerMemo(void) { struct PokeSummary *sum = &gUnknown_0203CF1C->summary; const u8 *text; + DynamicPlaceholderTextUtil_Reset(); DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gUnknown_0861CE74); DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gUnknown_0861CE7B); - sub_81C31C0(); - if (sub_81A6BF4() == TRUE || sub_81B9E94() == TRUE || sub_81C3304() == TRUE) + BufferNatureString(); + + if (sub_81A6BF4() == TRUE || sub_81B9E94() == TRUE || IsInGamePartnerMon() == TRUE) + { DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gText_XNature); + } else { - u8 *alloced1 = Alloc(32); - u8 *alloced2 = Alloc(32); - sub_81C31F0(alloced1); - if (sum->metLocation <= 0xD4) + u8 *metLevelString = Alloc(32); + u8 *metLocationString = Alloc(32); + GetMetLevelString(metLevelString); + + if (sum->metLocation < MAPSEC_NONE) { - sub_8124610(alloced2, sum->metLocation); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(4, alloced2); + sub_8124610(metLocationString, sum->metLocation); + DynamicPlaceholderTextUtil_SetPlaceholderPtr(4, metLocationString); } - if (sub_81C3220() == 1) + + if (DoesMonOTMatchOwner() == TRUE) { if (sum->metLevel == 0) - text = (sum->metLocation > 0xD4) ? gText_XNatureHatchedSomewhereAt : gText_XNatureHatchedAtYZ; + text = (sum->metLocation >= MAPSEC_NONE) ? gText_XNatureHatchedSomewhereAt : gText_XNatureHatchedAtYZ; else - text = (sum->metLocation > 0xD4) ? gText_XNatureMetSomewhereAt : gText_XNatureMetAtYZ; + text = (sum->metLocation >= MAPSEC_NONE) ? gText_XNatureMetSomewhereAt : gText_XNatureMetAtYZ; } - else if (sum->metLocation == 0xFF) + else if (sum->metLocation == MAPSEC_FATEFUL_ENCOUNTER) + { text = gText_XNatureFatefulEncounter; - else if (sum->metLocation != 0xFE && sub_81C32BC()) - text = (sum->metLocation > 0xD4) ? gText_XNatureObtainedInTrade : gText_XNatureProbablyMetAt; + } + else if (sum->metLocation != MAPSEC_IN_GAME_TRADE && MonCameFromGBAGames()) + { + text = (sum->metLocation >= MAPSEC_NONE) ? gText_XNatureObtainedInTrade : gText_XNatureProbablyMetAt; + } else + { text = gText_XNatureObtainedInTrade; + } + DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, text); - Free(alloced1); - Free(alloced2); + Free(metLevelString); + Free(metLocationString); } } -void sub_81C3194(void) +void PrintMonTrainerMemo(void) { - sub_81C25A4(sub_81C2D2C(gUnknown_0861CCCC, 3), gStringVar4, 0, 1, 0, 0); + SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCCC, 3), gStringVar4, 0, 1, 0, 0); } -void sub_81C31C0(void) +void BufferNatureString(void) { struct UnkSummaryStruct *sumStruct = gUnknown_0203CF1C; DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, gNatureNamePointers[sumStruct->summary.nature]); DynamicPlaceholderTextUtil_SetPlaceholderPtr(5, gText_EmptyString5); } -void sub_81C31F0(u8 *a) +void GetMetLevelString(u8 *output) { u8 level = gUnknown_0203CF1C->summary.metLevel; if (level == 0) level = EGG_HATCH_LEVEL; - ConvertIntToDecimalStringN(a, level, 0, 3); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(3, a); + ConvertIntToDecimalStringN(output, level, 0, 3); + DynamicPlaceholderTextUtil_SetPlaceholderPtr(3, output); } -u8 sub_81C3220(void) +bool8 DoesMonOTMatchOwner(void) { struct PokeSummary *sum = &gUnknown_0203CF1C->summary; - u32 r4; - u8 r5; + u32 trainerId; + u8 gender; if (gUnknown_0203CF1C->monList.mons == gEnemyParty) { u8 multiID = GetMultiplayerId() ^ 1; - r4 = (u16)gLinkPlayers[multiID].trainerId; - r5 = gLinkPlayers[multiID].gender; + trainerId = (u16)gLinkPlayers[multiID].trainerId; + gender = gLinkPlayers[multiID].gender; StringCopy(gStringVar1, gLinkPlayers[multiID].name); } else { - r4 = GetPlayerIDAsU32() & 0xFFFF; - r5 = gSaveBlock2Ptr->playerGender; + trainerId = GetPlayerIDAsU32() & 0xFFFF; + gender = gSaveBlock2Ptr->playerGender; StringCopy(gStringVar1, gSaveBlock2Ptr->playerName); } - if (r5 != sum->OTGender || r4 != (sum->OTID & 0xFFFF) || StringCompareWithoutExtCtrlCodes(gStringVar1, sum->OTName)) + if (gender != sum->OTGender || trainerId != (sum->OTID & 0xFFFF) || StringCompareWithoutExtCtrlCodes(gStringVar1, sum->OTName)) { - return 0; + return FALSE; } - return 1; + return TRUE; } -bool8 sub_81C32BC(void) +bool8 MonCameFromGBAGames(void) { struct PokeSummary *sum = &gUnknown_0203CF1C->summary; - u8 r0 = sum->metGame - 1; - if (r0 <= 4) + if (sum->metGame > 0 && sum->metGame <= VERSION_LEAF_GREEN) return TRUE; return FALSE; } -bool8 sub_81C32E0(void) +bool8 MonCameFromRSE(void) { struct PokeSummary *sum = &gUnknown_0203CF1C->summary; - u8 r0 = sum->metGame - 1; - if (r0 <= 2) + if (sum->metGame > 0 && sum->metGame <= VERSION_EMERALD) return TRUE; return FALSE; } -bool8 sub_81C3304(void) +bool8 IsInGamePartnerMon(void) { if ((gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) && gMain.inBattle) { @@ -3155,28 +3198,29 @@ bool8 sub_81C3304(void) return FALSE; } -void sub_81C335C(void) +void PrintEggOTName(void) { - u32 windowId = sub_81C2D2C(gUnknown_0861CCCC, 0); + u32 windowId = AddWindowFromTemplateList(gUnknown_0861CCCC, 0); u32 width = GetStringWidth(1, gText_OTSlash, 0); - sub_81C25A4(windowId, gText_OTSlash, 0, 1, 0, 1); - sub_81C25A4(windowId, gText_FiveMarks, width, 1, 0, 1); + SummaryScreen_PrintTextOnWindow(windowId, gText_OTSlash, 0, 1, 0, 1); + SummaryScreen_PrintTextOnWindow(windowId, gText_FiveMarks, width, 1, 0, 1); } -void sub_81C33CC(void) +void PrintEggOTID(void) { - int r4; + int x; StringCopy(gStringVar1, gText_UnkCtrlF907F908); StringAppend(gStringVar1, gText_FiveMarks); - r4 = GetStringRightAlignXOffset(1, gStringVar1, 0x38); - sub_81C25A4(sub_81C2D2C(gUnknown_0861CCCC, 1), gStringVar1, r4, 1, 0, 1); + x = GetStringRightAlignXOffset(1, gStringVar1, 56); + SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCCC, 1), gStringVar1, x, 1, 0, 1); } -void sub_81C3428(void) +void PrintEggState(void) { const u8 *text; struct PokeSummary *sum = &gUnknown_0203CF1C->summary; - if (gUnknown_0203CF1C->summary.sanity == 1) + + if (gUnknown_0203CF1C->summary.sanity == TRUE) text = gText_EggWillTakeALongTime; else if (sum->friendship <= 5) text = gText_EggAboutToHatch; @@ -3186,141 +3230,158 @@ void sub_81C3428(void) text = gText_EggWillTakeSomeTime; else text = gText_EggWillTakeALongTime; - sub_81C25A4(sub_81C2D2C(gUnknown_0861CCCC, 2), text, 0, 1, 0, 0); + + SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCCC, 2), text, 0, 1, 0, 0); } -void sub_81C349C(void) +void PrintEggMemo(void) { const u8 *text; struct PokeSummary *sum = &gUnknown_0203CF1C->summary; + if (gUnknown_0203CF1C->summary.sanity != 1) { - if (sum->metLocation == 0xFF) + if (sum->metLocation == MAPSEC_FATEFUL_ENCOUNTER) text = gText_PeculiarEggNicePlace; - else if (sub_81C32BC() == 0 || sub_81C3220() == 0) + else if (MonCameFromGBAGames() == FALSE || DoesMonOTMatchOwner() == FALSE) text = gText_PeculiarEggTrade; - else if (sum->metLocation == 0xFD) - text = (sub_81C32E0() == TRUE) ? gText_EggFromHotSprings : gText_EggFromTraveler; + else if (sum->metLocation == MAPSEC_SPECIAL_EGG) + text = (MonCameFromRSE() == TRUE) ? gText_EggFromHotSprings : gText_EggFromTraveler; else text = gText_OddEggFoundByCouple; } else + { text = gText_OddEggFoundByCouple; - sub_81C25A4(sub_81C2D2C(gUnknown_0861CCCC, 3), text, 0, 1, 0, 0); + } + + SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCCC, 3), text, 0, 1, 0, 0); } void sub_81C3530(void) { - sub_81C35E4(); - sub_81C3690(); - sub_81C3710(); - sub_81C37D8(); - sub_81C3808(); - sub_81C3890(); - sub_81C38C0(); + PrintHeldItemName(); + PrintRibbonCount(); + BufferLeftColumnStats(); + PrintLeftColumnStats(); + BufferRightColumnStats(); + PrintRightColumnStats(); + PrintExpPointsNextLevel(); } void sub_81C3554(u8 taskId) { s16 *data = gTasks[taskId].data; - s16 dataa = data[0] - 1; - switch (dataa) + + switch (data[0]) { - case 0: - sub_81C35E4(); - break; case 1: - sub_81C3690(); + PrintHeldItemName(); break; case 2: - sub_81C3710(); + PrintRibbonCount(); break; case 3: - sub_81C37D8(); + BufferLeftColumnStats(); break; case 4: - sub_81C3808(); + PrintLeftColumnStats(); break; case 5: - sub_81C3890(); + BufferRightColumnStats(); break; case 6: - sub_81C38C0(); + PrintRightColumnStats(); break; case 7: + PrintExpPointsNextLevel(); + break; + case 8: DestroyTask(taskId); return; } data[0]++; } -void sub_81C35E4(void) +void PrintHeldItemName(void) { const u8 *text; int offset; - if (gUnknown_0203CF1C->summary.item == ITEM_ENIGMA_BERRY && sub_81B1250() == 1 && (gUnknown_0203CF1C->curMonIndex == 1 || gUnknown_0203CF1C->curMonIndex == 4 || gUnknown_0203CF1C->curMonIndex == 5)) + + if (gUnknown_0203CF1C->summary.item == ITEM_ENIGMA_BERRY && sub_81B1250() == TRUE && (gUnknown_0203CF1C->curMonIndex == 1 || gUnknown_0203CF1C->curMonIndex == 4 || gUnknown_0203CF1C->curMonIndex == 5)) { text = ItemId_GetName(ITEM_ENIGMA_BERRY); } else if (gUnknown_0203CF1C->summary.item == ITEM_NONE) + { text = gText_None; + } else { CopyItemName(gUnknown_0203CF1C->summary.item, gStringVar1); text = gStringVar1; } - offset = GetStringCenterAlignXOffset(1, text, 0x48) + 6; - sub_81C25A4(sub_81C2D2C(gUnknown_0861CCEC, 0), text, offset, 1, 0, 0); + + offset = GetStringCenterAlignXOffset(1, text, 72) + 6; + SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCEC, 0), text, offset, 1, 0, 0); } -void sub_81C3690(void) +void PrintRibbonCount(void) { const u8 *text; int offset; - if (gUnknown_0203CF1C->summary.ribbons == 0) + + if (gUnknown_0203CF1C->summary.ribbonCount == 0) + { text = gText_None; + } else { - ConvertIntToDecimalStringN(gStringVar1, gUnknown_0203CF1C->summary.ribbons, 1, 2); + ConvertIntToDecimalStringN(gStringVar1, gUnknown_0203CF1C->summary.ribbonCount, 1, 2); StringExpandPlaceholders(gStringVar4, gText_RibbonsVar1); text = gStringVar4; } - offset = GetStringCenterAlignXOffset(1, text, 0x46) + 6; - sub_81C25A4(sub_81C2D2C(gUnknown_0861CCEC, 1), text, offset, 1, 0, 0); + + offset = GetStringCenterAlignXOffset(1, text, 70) + 6; + SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCEC, 1), text, offset, 1, 0, 0); } -void sub_81C3710(void) +void BufferLeftColumnStats(void) { - u8 *alloced1 = Alloc(8); - u8 *alloced2 = Alloc(8); - u8 *alloced3 = Alloc(8); - u8 *alloced4 = Alloc(8); - ConvertIntToDecimalStringN(alloced1, gUnknown_0203CF1C->summary.currentHP, 1, 3); - ConvertIntToDecimalStringN(alloced2, gUnknown_0203CF1C->summary.maxHP, 1, 3); - ConvertIntToDecimalStringN(alloced3, gUnknown_0203CF1C->summary.atk, 1, 7); - ConvertIntToDecimalStringN(alloced4, gUnknown_0203CF1C->summary.def, 1, 7); + u8 *currentHPString = Alloc(8); + u8 *maxHPString = Alloc(8); + u8 *attackString = Alloc(8); + u8 *defenseString = Alloc(8); + + ConvertIntToDecimalStringN(currentHPString, gUnknown_0203CF1C->summary.currentHP, 1, 3); + ConvertIntToDecimalStringN(maxHPString, gUnknown_0203CF1C->summary.maxHP, 1, 3); + ConvertIntToDecimalStringN(attackString, gUnknown_0203CF1C->summary.atk, 1, 7); + ConvertIntToDecimalStringN(defenseString, gUnknown_0203CF1C->summary.def, 1, 7); + DynamicPlaceholderTextUtil_Reset(); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, alloced1); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, alloced2); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, alloced3); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(3, alloced4); + DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, currentHPString); + DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, maxHPString); + DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, attackString); + DynamicPlaceholderTextUtil_SetPlaceholderPtr(3, defenseString); DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_0861CE82); - Free(alloced1); - Free(alloced2); - Free(alloced3); - Free(alloced4); + + Free(currentHPString); + Free(maxHPString); + Free(attackString); + Free(defenseString); } -void sub_81C37D8(void) +void PrintLeftColumnStats(void) { - sub_81C25A4(sub_81C2D2C(gUnknown_0861CCEC, 2), gStringVar4, 4, 1, 0, 0); + SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCEC, 2), gStringVar4, 4, 1, 0, 0); } -void sub_81C3808(void) +void BufferRightColumnStats(void) { ConvertIntToDecimalStringN(gStringVar1, gUnknown_0203CF1C->summary.spatk, 1, 3); ConvertIntToDecimalStringN(gStringVar2, gUnknown_0203CF1C->summary.spdef, 1, 3); ConvertIntToDecimalStringN(gStringVar3, gUnknown_0203CF1C->summary.speed, 1, 3); + DynamicPlaceholderTextUtil_Reset(); DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStringVar1); DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gStringVar2); @@ -3328,73 +3389,78 @@ void sub_81C3808(void) DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_0861CE8E); } -void sub_81C3890(void) +void PrintRightColumnStats(void) { - sub_81C25A4(sub_81C2D2C(gUnknown_0861CCEC, 3), gStringVar4, 2, 1, 0, 0); + SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCEC, 3), gStringVar4, 2, 1, 0, 0); } -void sub_81C38C0(void) +void PrintExpPointsNextLevel(void) { struct PokeSummary *sum = &gUnknown_0203CF1C->summary; - u8 r6 = sub_81C2D2C(gUnknown_0861CCEC, 4); + u8 windowId = AddWindowFromTemplateList(gUnknown_0861CCEC, 4); int offset; u32 expToNextLevel; + ConvertIntToDecimalStringN(gStringVar1, sum->exp, 1, 7); - offset = GetStringRightAlignXOffset(1, gStringVar1, 0x2A) + 2; - sub_81C25A4(r6, gStringVar1, offset, 1, 0, 0); + offset = GetStringRightAlignXOffset(1, gStringVar1, 42) + 2; + SummaryScreen_PrintTextOnWindow(windowId, gStringVar1, offset, 1, 0, 0); + if (sum->level < MAX_MON_LEVEL) expToNextLevel = gExperienceTables[gBaseStats[sum->species].growthRate][sum->level + 1] - sum->exp; else expToNextLevel = 0; + ConvertIntToDecimalStringN(gStringVar1, expToNextLevel, 1, 6); - offset = GetStringRightAlignXOffset(1, gStringVar1, 0x2A) + 2; - sub_81C25A4(r6, gStringVar1, offset, 17, 0, 0); + offset = GetStringRightAlignXOffset(1, gStringVar1, 42) + 2; + SummaryScreen_PrintTextOnWindow(windowId, gStringVar1, offset, 17, 0, 0); } void sub_81C3984(void) { - sub_81C3B08(0); - sub_81C3B08(1); - sub_81C3B08(2); - sub_81C3B08(3); - if (gUnknown_0203CF1C->mode == 3) + PrintMoveNameAndPP(0); + PrintMoveNameAndPP(1); + PrintMoveNameAndPP(2); + PrintMoveNameAndPP(3); + + if (gUnknown_0203CF1C->mode == PSS_MODE_SELECT_MOVE) { - sub_81C3F44(); + PrintNewMoveDetailsOrCancelText(); if (gUnknown_0203CF1C->firstMoveIndex == MAX_MON_MOVES) { if (gUnknown_0203CF1C->newMove != MOVE_NONE) sub_81C3E9C(gUnknown_0203CF1C->newMove); } else + { sub_81C3E9C(gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->firstMoveIndex]); + } } } void sub_81C39F0(u8 taskId) { s16 *data = gTasks[taskId].data; - s16 dataa = data[0] - 1; - switch (dataa) + switch (data[0]) { - case 0: - sub_81C3B08(0); - break; case 1: - sub_81C3B08(1); + PrintMoveNameAndPP(0); break; case 2: - sub_81C3B08(2); + PrintMoveNameAndPP(1); break; case 3: - sub_81C3B08(3); + PrintMoveNameAndPP(2); break; case 4: - if (gUnknown_0203CF1C->mode == 3) - sub_81C3F44(); + PrintMoveNameAndPP(3); break; case 5: - if (gUnknown_0203CF1C->mode == 3) + if (gUnknown_0203CF1C->mode == PSS_MODE_SELECT_MOVE) + PrintNewMoveDetailsOrCancelText(); + break; + case 6: + if (gUnknown_0203CF1C->mode == PSS_MODE_SELECT_MOVE) { if (gUnknown_0203CF1C->firstMoveIndex == MAX_MON_MOVES) data[1] = gUnknown_0203CF1C->newMove; @@ -3402,89 +3468,99 @@ void sub_81C39F0(u8 taskId) data[1] = gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->firstMoveIndex]; } break; - case 6: - if (gUnknown_0203CF1C->mode == 3) + case 7: + if (gUnknown_0203CF1C->mode == PSS_MODE_SELECT_MOVE) { - if (!(gUnknown_0203CF1C->newMove == MOVE_NONE && gUnknown_0203CF1C->firstMoveIndex == MAX_MON_MOVES)) + if (gUnknown_0203CF1C->newMove != MOVE_NONE || gUnknown_0203CF1C->firstMoveIndex != MAX_MON_MOVES) sub_81C3E9C(data[1]); } break; - case 7: + case 8: DestroyTask(taskId); return; } data[0]++; } -void sub_81C3B08(u8 a) +void PrintMoveNameAndPP(u8 moveIndex) { u8 pp; u32 ppState; const u8 *text; u32 offset; struct UnkSummaryStruct *summaryStruct = gUnknown_0203CF1C; - u8 r8 = sub_81C2D2C(gUnknown_0861CD14, 0); - u8 sp = sub_81C2D2C(gUnknown_0861CD14, 1); - u16 move = summaryStruct->summary.moves[a]; + u8 moveNameWindowId = AddWindowFromTemplateList(gUnknown_0861CD14, 0); + u8 ppValueWindowId = AddWindowFromTemplateList(gUnknown_0861CD14, 1); + u16 move = summaryStruct->summary.moves[moveIndex]; if (move != 0) { - pp = CalculatePPWithBonus(move, summaryStruct->summary.ppBonuses, a); - sub_81C25A4(r8, gMoveNames[move], 0, a * 16 + 1, 0, 1); - ConvertIntToDecimalStringN(gStringVar1, summaryStruct->summary.pp[a], 1, 2); + pp = CalculatePPWithBonus(move, summaryStruct->summary.ppBonuses, moveIndex); + SummaryScreen_PrintTextOnWindow(moveNameWindowId, gMoveNames[move], 0, moveIndex * 16 + 1, 0, 1); + ConvertIntToDecimalStringN(gStringVar1, summaryStruct->summary.pp[moveIndex], 1, 2); ConvertIntToDecimalStringN(gStringVar2, pp, 1, 2); DynamicPlaceholderTextUtil_Reset(); DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStringVar1); DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gStringVar2); DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_0861CE97); text = gStringVar4; - ppState = GetCurrentPpToMaxPpState(summaryStruct->summary.pp[a], pp) + 9; - offset = GetStringRightAlignXOffset(1, text, 0x2C); + ppState = GetCurrentPpToMaxPpState(summaryStruct->summary.pp[moveIndex], pp) + 9; + offset = GetStringRightAlignXOffset(1, text, 44); } else { - sub_81C25A4(r8, gText_OneDash, 0, a * 16 + 1, 0, 1); + SummaryScreen_PrintTextOnWindow(moveNameWindowId, gText_OneDash, 0, moveIndex * 16 + 1, 0, 1); text = gText_TwoDashes; ppState = 12; - offset = GetStringCenterAlignXOffset(1, text, 0x2C); + offset = GetStringCenterAlignXOffset(1, text, 44); } - sub_81C25A4(sp, text, offset, a * 16 + 1, 0, ppState); + + SummaryScreen_PrintTextOnWindow(ppValueWindowId, text, offset, moveIndex * 16 + 1, 0, ppState); } -void sub_81C3C5C(u16 move) +void PrintMovePowerAndAccuracy(u16 moveIndex) { const u8 *text; - if (move != 0) + if (moveIndex != 0) { - FillWindowPixelRect(14, 0, 0x35, 0, 0x13, 0x20); - if (gBattleMoves[move].power <= 1) + FillWindowPixelRect(14, 0, 53, 0, 19, 32); + + if (gBattleMoves[moveIndex].power < 2) + { text = gText_ThreeDashes; + } else { - ConvertIntToDecimalStringN(gStringVar1, gBattleMoves[move].power, 1, 3); + ConvertIntToDecimalStringN(gStringVar1, gBattleMoves[moveIndex].power, 1, 3); text = gStringVar1; } - sub_81C25A4(14, text, 0x35, 1, 0, 0); - if (gBattleMoves[move].accuracy == 0) + + SummaryScreen_PrintTextOnWindow(14, text, 53, 1, 0, 0); + + if (gBattleMoves[moveIndex].accuracy == 0) + { text = gText_ThreeDashes; + } else { - ConvertIntToDecimalStringN(gStringVar1, gBattleMoves[move].accuracy, 1, 3); + ConvertIntToDecimalStringN(gStringVar1, gBattleMoves[moveIndex].accuracy, 1, 3); text = gStringVar1; } - sub_81C25A4(14, text, 0x35, 17, 0, 0); + + SummaryScreen_PrintTextOnWindow(14, text, 53, 17, 0, 0); } } void sub_81C3D08(void) { - sub_81C3B08(0); - sub_81C3B08(1); - sub_81C3B08(2); - sub_81C3B08(3); - if (gUnknown_0203CF1C->mode == 3) + PrintMoveNameAndPP(0); + PrintMoveNameAndPP(1); + PrintMoveNameAndPP(2); + PrintMoveNameAndPP(3); + + if (gUnknown_0203CF1C->mode == PSS_MODE_SELECT_MOVE) { - sub_81C3F44(); + PrintNewMoveDetailsOrCancelText(); sub_81C3E2C(gUnknown_0203CF1C->firstMoveIndex); } } @@ -3497,25 +3573,25 @@ void sub_81C3D54(u8 taskId) switch (dataa) { case 0: - sub_81C3B08(0); + PrintMoveNameAndPP(0); break; case 1: - sub_81C3B08(1); + PrintMoveNameAndPP(1); break; case 2: - sub_81C3B08(2); + PrintMoveNameAndPP(2); break; case 3: - sub_81C3B08(3); + PrintMoveNameAndPP(3); break; case 4: - if (gUnknown_0203CF1C->mode == 3) - sub_81C3F44(); + if (gUnknown_0203CF1C->mode == PSS_MODE_SELECT_MOVE) + PrintNewMoveDetailsOrCancelText(); break; case 5: - if (gUnknown_0203CF1C->mode == 3) + if (gUnknown_0203CF1C->mode == PSS_MODE_SELECT_MOVE) { - if (!(gUnknown_0203CF1C->newMove == MOVE_NONE && gUnknown_0203CF1C->firstMoveIndex == MAX_MON_MOVES)) + if (gUnknown_0203CF1C->newMove != MOVE_NONE || gUnknown_0203CF1C->firstMoveIndex != MAX_MON_MOVES) sub_81C3E2C(gUnknown_0203CF1C->firstMoveIndex); } break; @@ -3537,25 +3613,25 @@ void sub_81C3E2C(u8 moveSlot) if (move != MOVE_NONE) { - u8 windowId = sub_81C2D2C(gUnknown_0861CD14, 2); - sub_81C25A4(windowId, gContestEffectDescriptionPointers[gContestMoves[move].effect], 6, 1, 0, 0); + u8 windowId = AddWindowFromTemplateList(gUnknown_0861CD14, 2); + SummaryScreen_PrintTextOnWindow(windowId, gContestEffectDescriptionPointers[gContestMoves[move].effect], 6, 1, 0, 0); } } void sub_81C3E9C(u16 move) { - u8 windowId = sub_81C2D2C(gUnknown_0861CD14, 2); + u8 windowId = AddWindowFromTemplateList(gUnknown_0861CD14, 2); FillWindowPixelBuffer(windowId, 0); if (move != MOVE_NONE) { - if (gUnknown_0203CF1C->unk40C0 == 2) + if (gUnknown_0203CF1C->currPageIndex == 2) { - sub_81C3C5C(move); - sub_81C25A4(windowId, gMoveDescriptionPointers[move - 1], 6, 1, 0, 0); + PrintMovePowerAndAccuracy(move); + SummaryScreen_PrintTextOnWindow(windowId, gMoveDescriptionPointers[move - 1], 6, 1, 0, 0); } else { - sub_81C25A4(windowId, gContestEffectDescriptionPointers[gContestMoves[move].effect], 6, 1, 0, 0); + SummaryScreen_PrintTextOnWindow(windowId, gContestEffectDescriptionPointers[gContestMoves[move].effect], 6, 1, 0, 0); } PutWindowTilemap(windowId); } @@ -3567,58 +3643,60 @@ void sub_81C3E9C(u16 move) schedule_bg_copy_tilemap_to_vram(0); } -void sub_81C3F44(void) +void PrintNewMoveDetailsOrCancelText(void) { - u8 windowId1 = sub_81C2D2C(gUnknown_0861CD14, 0); - u8 windowId2 = sub_81C2D2C(gUnknown_0861CD14, 1); + u8 windowId1 = AddWindowFromTemplateList(gUnknown_0861CD14, 0); + u8 windowId2 = AddWindowFromTemplateList(gUnknown_0861CD14, 1); + if (gUnknown_0203CF1C->newMove == MOVE_NONE) { - sub_81C25A4(windowId1, gText_Cancel, 0, 0x41, 0, 1); + SummaryScreen_PrintTextOnWindow(windowId1, gText_Cancel, 0, 65, 0, 1); } else { u16 move = gUnknown_0203CF1C->newMove; - if (gUnknown_0203CF1C->unk40C0 == 2) - sub_81C25A4(windowId1, gMoveNames[move], 0, 0x41, 0, 6); + + if (gUnknown_0203CF1C->currPageIndex == 2) + SummaryScreen_PrintTextOnWindow(windowId1, gMoveNames[move], 0, 65, 0, 6); else - sub_81C25A4(windowId1, gMoveNames[move], 0, 0x41, 0, 5); + SummaryScreen_PrintTextOnWindow(windowId1, gMoveNames[move], 0, 65, 0, 5); ConvertIntToDecimalStringN(gStringVar1, gBattleMoves[move].pp, 1, 2); DynamicPlaceholderTextUtil_Reset(); DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStringVar1); DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gStringVar1); DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_0861CE97); - sub_81C25A4(windowId2, gStringVar4, GetStringRightAlignXOffset(1, gStringVar4, 0x2C), 0x41, 0, 12); + SummaryScreen_PrintTextOnWindow(windowId2, gStringVar4, GetStringRightAlignXOffset(1, gStringVar4, 0x2C), 0x41, 0, 12); } } void sub_81C4064(void) { - u8 windowId = sub_81C2D2C(gUnknown_0861CD14, 0); - FillWindowPixelRect(windowId, 0, 0, 0x42, 0x48, 0x10); + u8 windowId = AddWindowFromTemplateList(gUnknown_0861CD14, 0); + FillWindowPixelRect(windowId, 0, 0, 66, 72, 16); CopyWindowToVram(windowId, 2); } -void sub_81C40A0(u8 a, u8 b) +void sub_81C40A0(u8 moveIndex1, u8 moveIndex2) { - u8 windowId1 = sub_81C2D2C(gUnknown_0861CD14, 0); - u8 windowId2 = sub_81C2D2C(gUnknown_0861CD14, 1); + u8 windowId1 = AddWindowFromTemplateList(gUnknown_0861CD14, 0); + u8 windowId2 = AddWindowFromTemplateList(gUnknown_0861CD14, 1); - FillWindowPixelRect(windowId1, 0, 0, a * 16, 0x48, 0x10); - FillWindowPixelRect(windowId1, 0, 0, b * 16, 0x48, 0x10); + FillWindowPixelRect(windowId1, 0, 0, moveIndex1 * 16, 0x48, 0x10); + FillWindowPixelRect(windowId1, 0, 0, moveIndex2 * 16, 0x48, 0x10); - FillWindowPixelRect(windowId2, 0, 0, a * 16, 0x30, 0x10); - FillWindowPixelRect(windowId2, 0, 0, b * 16, 0x30, 0x10); + FillWindowPixelRect(windowId2, 0, 0, moveIndex1 * 16, 0x30, 0x10); + FillWindowPixelRect(windowId2, 0, 0, moveIndex2 * 16, 0x30, 0x10); - sub_81C3B08(a); - sub_81C3B08(b); + PrintMoveNameAndPP(moveIndex1); + PrintMoveNameAndPP(moveIndex2); } void sub_81C4154(void) { - u8 windowId = sub_81C2D2C(gUnknown_0861CD14, 2); + u8 windowId = AddWindowFromTemplateList(gUnknown_0861CD14, 2); FillWindowPixelBuffer(windowId, 0); - sub_81C25A4(windowId, gText_HMMovesCantBeForgotten2, 6, 1, 0, 0); + SummaryScreen_PrintTextOnWindow(windowId, gText_HMMovesCantBeForgotten2, 6, 1, 0, 0); } void sub_81C4190(void) @@ -3656,7 +3734,7 @@ void sub_81C424C(void) void sub_81C4280(void) { - switch (gUnknown_0203CF1C->unk40C0) + switch (gUnknown_0203CF1C->currPageIndex) { case 0: sub_81C43A0(); @@ -3752,7 +3830,7 @@ void sub_81C44F0(void) } else { - if (gUnknown_0203CF1C->unk40C0 == 2) + if (gUnknown_0203CF1C->currPageIndex == 2) sub_81C4318(gBattleMoves[gUnknown_0203CF1C->newMove].type, 0x55, 0x60, 7); else sub_81C4318(NUMBER_OF_MON_TYPES + gContestMoves[gUnknown_0203CF1C->newMove].contestCategory, 0x55, 0x60, 7); @@ -3803,7 +3881,7 @@ u8 sub_81C45F4(struct Pokemon *mon, s16 *a1) { if (gMonSpritesGfxPtr != NULL) { - if (gUnknown_0203CF1C->monList.mons == gPlayerParty || gUnknown_0203CF1C->mode == 2 || gUnknown_0203CF1C->unk40EF == TRUE) + if (gUnknown_0203CF1C->monList.mons == gPlayerParty || gUnknown_0203CF1C->mode == PSS_MODE_UNK2 || gUnknown_0203CF1C->unk40EF == TRUE) { HandleLoadSpecialPokePic_2(&gMonFrontPicTable[summary->species2], gMonSpritesGfxPtr->sprites[1], summary->species2, summary->pid); } @@ -3814,7 +3892,7 @@ u8 sub_81C45F4(struct Pokemon *mon, s16 *a1) } else { - if (gUnknown_0203CF1C->monList.mons == gPlayerParty || gUnknown_0203CF1C->mode == 2 || gUnknown_0203CF1C->unk40EF == TRUE) + if (gUnknown_0203CF1C->monList.mons == gPlayerParty || gUnknown_0203CF1C->mode == PSS_MODE_UNK2 || gUnknown_0203CF1C->unk40EF == TRUE) { HandleLoadSpecialPokePic_2(&gMonFrontPicTable[summary->species2], sub_806F4F8(0, 1), summary->species2, summary->pid); } @@ -3893,7 +3971,7 @@ void sub_81C488C(u8 a0) sUnusedTaskId = a0; } -void sub_81C4898(void) +void DestoryUnusedTask(void) { if (sUnusedTaskId != 0xFF) { @@ -3991,7 +4069,7 @@ void sub_81C4AF8(u8 a0) u8 i; u8 *spriteIds = &gUnknown_0203CF1C->spriteIds[a0]; - if (gUnknown_0203CF1C->unk40C0 > 1) + if (gUnknown_0203CF1C->currPageIndex > 1) { u8 subsprite = 0; if (a0 == 8) -- cgit v1.2.3 From c806992cfc5a4fac53f2c8a52b32f7a039773e41 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Wed, 15 Aug 2018 11:43:57 +0200 Subject: Port contest ai from pokeruby --- src/contest.c | 10 +- src/contest_ai.c | 1758 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 1763 insertions(+), 5 deletions(-) create mode 100644 src/contest_ai.c (limited to 'src') diff --git a/src/contest.c b/src/contest.c index 8513fc4a9..910637387 100644 --- a/src/contest.c +++ b/src/contest.c @@ -107,7 +107,7 @@ u16 sub_80DE84C(u16); void sub_80DB89C(void); u16 sub_80DB8B8(u8); void sub_80DB918(void); -bool8 sub_80DBCA8(u8); +bool8 Contest_IsMonsTurnDisabled(u8); void sub_80DBF68(void); void sub_80DBF90(void); void sub_80DC2BC(void); @@ -721,7 +721,7 @@ void sub_80D833C(u8 taskId) sub_80DCD48(); DmaCopy32Defvars(3, gPlttBufferUnfaded, shared18000.unk18204, 0x400); ConvertIntToDecimalStringN(gStringVar1, gContestResources->field_0->turnNumber + 1, STR_CONV_MODE_LEFT_ALIGN, 1); - if (!sub_80DBCA8(gContestPlayerMonIndex)) + if (!Contest_IsMonsTurnDisabled(gContestPlayerMonIndex)) StringCopy(gDisplayedStringBattle, gText_0827D507); else StringCopy(gDisplayedStringBattle, gText_0827D531); @@ -745,7 +745,7 @@ void sub_80D8424(u8 taskId) if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys == B_BUTTON)) { PlaySE(SE_SELECT); - if (!sub_80DBCA8(gContestPlayerMonIndex)) + if (!Contest_IsMonsTurnDisabled(gContestPlayerMonIndex)) { sub_80DC490(TRUE); gTasks[taskId].func = sub_80D8490; @@ -819,7 +819,7 @@ void sub_80D8610(u8 taskId) PlaySE(SE_SELECT); sub_80DC490(FALSE); ConvertIntToDecimalStringN(gStringVar1, gContestResources->field_0->turnNumber + 1, STR_CONV_MODE_LEFT_ALIGN, 1); - if (!sub_80DBCA8(gContestPlayerMonIndex)) + if (!Contest_IsMonsTurnDisabled(gContestPlayerMonIndex)) StringCopy(gDisplayedStringBattle, gText_0827D507); else StringCopy(gDisplayedStringBattle, gText_0827D531); @@ -2636,7 +2636,7 @@ void sub_80DB4E0(u16 move, u8 b) { u8 r7 = gUnknown_02039F26[b] * 5 + 2; - if (!sub_80DBCA8(b) && move != MOVE_NONE) + if (!Contest_IsMonsTurnDisabled(b) && move != MOVE_NONE) { u16 tile = sub_80DB2EC(move, b); diff --git a/src/contest_ai.c b/src/contest_ai.c new file mode 100644 index 000000000..059c351e9 --- /dev/null +++ b/src/contest_ai.c @@ -0,0 +1,1758 @@ +#include "global.h" +#include "contest.h" +#include "random.h" +#include "contest_ai.h" +#include "contest_effect.h" + +extern u16 gSpecialVar_ContestCategory; +extern u16 gContestMonConditions[]; + +extern const u8 *gAIScriptPtr; +extern const u8 *gContestAIs[]; + +static void ContestAICmd_unk_00(void); +static void ContestAICmd_get_turn(void); +static void ContestAICmd_unk_02(void); +static void ContestAICmd_unk_03(void); +static void ContestAICmd_unk_04(void); +static void ContestAICmd_unk_05(void); +static void ContestAICmd_get_excitement(void); +static void ContestAICmd_unk_07(void); +static void ContestAICmd_unk_08(void); +static void ContestAICmd_unk_09(void); +static void ContestAICmd_unk_0A(void); +static void ContestAICmd_get_user_order(void); +static void ContestAICmd_unk_0C(void); +static void ContestAICmd_unk_0D(void); +static void ContestAICmd_unk_0E(void); +static void ContestAICmd_unk_0F(void); +static void ContestAICmd_get_user_condition_maybe(void); +static void ContestAICmd_unk_11(void); +static void ContestAICmd_unk_12(void); +static void ContestAICmd_unk_13(void); +static void ContestAICmd_unk_14(void); +static void ContestAICmd_unk_15(void); +static void ContestAICmd_unk_16(void); +static void ContestAICmd_unk_17(void); +static void ContestAICmd_unk_18(void); +static void ContestAICmd_unk_19(void); +static void ContestAICmd_unk_1A(void); +static void ContestAICmd_unk_1B(void); +static void ContestAICmd_unk_1C(void); +static void ContestAICmd_unk_1D(void); +static void ContestAICmd_unk_1E(void); +static void ContestAICmd_get_contest_type(void); +static void ContestAICmd_unk_20(void); +static void ContestAICmd_unk_21(void); +static void ContestAICmd_get_move_excitement(void); +static void ContestAICmd_unk_23(void); +static void ContestAICmd_unk_24(void); +static void ContestAICmd_unk_25(void); +static void ContestAICmd_unk_26(void); +static void ContestAICmd_get_move_effect(void); +static void ContestAICmd_unk_28(void); +static void ContestAICmd_unk_29(void); +static void ContestAICmd_get_move_effect_type(void); +static void ContestAICmd_unk_2B(void); +static void ContestAICmd_unk_2C(void); +static void ContestAICmd_check_move_has_highest_appeal(void); +static void ContestAICmd_unk_2E(void); +static void ContestAICmd_unk_2F(void); +static void ContestAICmd_unk_30(void); +static void ContestAICmd_unk_31(void); +static void ContestAICmd_unk_32(void); +static void ContestAICmd_unk_33(void); +static void ContestAICmd_unk_34(void); +static void ContestAICmd_unk_35(void); +static void ContestAICmd_unk_36(void); +static void ContestAICmd_unk_37(void); +static void ContestAICmd_unk_38(void); +static void ContestAICmd_unk_39(void); +static void ContestAICmd_unk_3A(void); +static void ContestAICmd_get_move_used_count(void); +static void ContestAICmd_unk_3C(void); +static void ContestAICmd_unk_3D(void); +static void ContestAICmd_unk_3E(void); +static void ContestAICmd_unk_3F(void); +static void ContestAICmd_check_combo_starter(void); +static void ContestAICmd_unk_41(void); +static void ContestAICmd_unk_42(void); +static void ContestAICmd_check_combo_finisher(void); +static void ContestAICmd_unk_44(void); +static void ContestAICmd_unk_45(void); +static void ContestAICmd_check_would_finish_combo(void); +static void ContestAICmd_unk_47(void); +static void ContestAICmd_unk_48(void); +static void ContestAICmd_get_condition(void); +static void ContestAICmd_unk_4A(void); +static void ContestAICmd_unk_4B(void); +static void ContestAICmd_unk_4C(void); +static void ContestAICmd_unk_4D(void); +static void ContestAICmd_get_used_combo_starter(void); +static void ContestAICmd_unk_4F(void); +static void ContestAICmd_unk_50(void); +static void ContestAICmd_unk_51(void); +static void ContestAICmd_unk_52(void); +static void ContestAICmd_check_can_participate(void); +static void ContestAICmd_unk_54(void); +static void ContestAICmd_unk_55(void); +static void ContestAICmd_get_val_812A188(void); +static void ContestAICmd_unk_57(void); +static void ContestAICmd_unk_58(void); +static void ContestAICmd_unk_59(void); +static void ContestAICmd_unk_5A(void); +static void ContestAICmd_unk_5B(void); +static void ContestAICmd_unk_5C(void); +static void ContestAICmd_unk_5D(void); +static void ContestAICmd_unk_5E(void); +static void ContestAICmd_unk_5F(void); +static void ContestAICmd_unk_60(void); +static void ContestAICmd_unk_61(void); +static void ContestAICmd_unk_62(void); +static void ContestAICmd_unk_63(void); +static void ContestAICmd_unk_64(void); +static void ContestAICmd_unk_65(void); +static void ContestAICmd_unk_66(void); +static void ContestAICmd_unk_67(void); +static void ContestAICmd_unk_68(void); +static void ContestAICmd_unk_69(void); +static void ContestAICmd_unk_6A(void); +static void ContestAICmd_unk_6B(void); +static void ContestAICmd_unk_6C(void); +static void ContestAICmd_unk_6D(void); +static void ContestAICmd_unk_6E(void); +static void ContestAICmd_unk_6F(void); +static void ContestAICmd_unk_70(void); +static void ContestAICmd_unk_71(void); +static void ContestAICmd_unk_72(void); +static void ContestAICmd_unk_73(void); +static void ContestAICmd_unk_74(void); +static void ContestAICmd_unk_75(void); +static void ContestAICmd_unk_76(void); +static void ContestAICmd_unk_77(void); +static void ContestAICmd_unk_78(void); +static void ContestAICmd_unk_79(void); +static void ContestAICmd_unk_7A(void); +static void ContestAICmd_unk_7B(void); +static void ContestAICmd_unk_7C(void); +static void ContestAICmd_unk_7D(void); +static void ContestAICmd_unk_7E(void); +static void ContestAICmd_unk_7F(void); +static void ContestAICmd_unk_80(void); +static void ContestAICmd_unk_81(void); +static void ContestAICmd_check_for_exciting_move(void); +static void ContestAICmd_unk_83(void); +static void ContestAICmd_unk_84(void); +static void ContestAICmd_unk_85(void); +static void ContestAICmd_unk_86(void); +static void ContestAICmd_unk_87(void); + +typedef void (* ContestAICmdFunc)(void); + +static const ContestAICmdFunc sContestAICmdTable[] = +{ + ContestAICmd_unk_00, // 0x00 + ContestAICmd_get_turn, // 0x01 + ContestAICmd_unk_02, // 0x02 + ContestAICmd_unk_03, // 0x03 + ContestAICmd_unk_04, // 0x04 + ContestAICmd_unk_05, // 0x05 + ContestAICmd_get_excitement, // 0x06 + ContestAICmd_unk_07, // 0x07 + ContestAICmd_unk_08, // 0x08 + ContestAICmd_unk_09, // 0x09 + ContestAICmd_unk_0A, // 0x0A + ContestAICmd_get_user_order, // 0x0B + ContestAICmd_unk_0C, // 0x0C + ContestAICmd_unk_0D, // 0x0D + ContestAICmd_unk_0E, // 0x0E + ContestAICmd_unk_0F, // 0x0F + ContestAICmd_get_user_condition_maybe, // 0x10 + ContestAICmd_unk_11, // 0x11 + ContestAICmd_unk_12, // 0x12 + ContestAICmd_unk_13, // 0x13 + ContestAICmd_unk_14, // 0x14 + ContestAICmd_unk_15, // 0x15 + ContestAICmd_unk_16, // 0x16 + ContestAICmd_unk_17, // 0x17 + ContestAICmd_unk_18, // 0x18 + ContestAICmd_unk_19, // 0x19 + ContestAICmd_unk_1A, // 0x1A + ContestAICmd_unk_1B, // 0x1B + ContestAICmd_unk_1C, // 0x1C + ContestAICmd_unk_1D, // 0x1D + ContestAICmd_unk_1E, // 0x1E + ContestAICmd_get_contest_type, // 0x1F + ContestAICmd_unk_20, // 0x20 + ContestAICmd_unk_21, // 0x21 + ContestAICmd_get_move_excitement, // 0x22 + ContestAICmd_unk_23, // 0x23 + ContestAICmd_unk_24, // 0x24 + ContestAICmd_unk_25, // 0x25 + ContestAICmd_unk_26, // 0x26 + ContestAICmd_get_move_effect, // 0x27 + ContestAICmd_unk_28, // 0x28 + ContestAICmd_unk_29, // 0x29 + ContestAICmd_get_move_effect_type, // 0x2A + ContestAICmd_unk_2B, // 0x2B + ContestAICmd_unk_2C, // 0x2C + ContestAICmd_check_move_has_highest_appeal, // 0x2D + ContestAICmd_unk_2E, // 0x2E + ContestAICmd_unk_2F, // 0x2F + ContestAICmd_unk_30, // 0x30 + ContestAICmd_unk_31, // 0x31 + ContestAICmd_unk_32, // 0x32 + ContestAICmd_unk_33, // 0x33 + ContestAICmd_unk_34, // 0x34 + ContestAICmd_unk_35, // 0x35 + ContestAICmd_unk_36, // 0x36 + ContestAICmd_unk_37, // 0x37 + ContestAICmd_unk_38, // 0x38 + ContestAICmd_unk_39, // 0x39 + ContestAICmd_unk_3A, // 0x3A + ContestAICmd_get_move_used_count, // 0x3B + ContestAICmd_unk_3C, // 0x3C + ContestAICmd_unk_3D, // 0x3D + ContestAICmd_unk_3E, // 0x3E + ContestAICmd_unk_3F, // 0x3F + ContestAICmd_check_combo_starter, // 0x40 + ContestAICmd_unk_41, // 0x41 + ContestAICmd_unk_42, // 0x42 + ContestAICmd_check_combo_finisher, // 0x43 + ContestAICmd_unk_44, // 0x44 + ContestAICmd_unk_45, // 0x45 + ContestAICmd_check_would_finish_combo, // 0x46 + ContestAICmd_unk_47, // 0x47 + ContestAICmd_unk_48, // 0x48 + ContestAICmd_get_condition, // 0x49 + ContestAICmd_unk_4A, // 0x4A + ContestAICmd_unk_4B, // 0x4B + ContestAICmd_unk_4C, // 0x4C + ContestAICmd_unk_4D, // 0x4D + ContestAICmd_get_used_combo_starter, // 0x4E + ContestAICmd_unk_4F, // 0x4F + ContestAICmd_unk_50, // 0x50 + ContestAICmd_unk_51, // 0x51 + ContestAICmd_unk_52, // 0x52 + ContestAICmd_check_can_participate, // 0x53 + ContestAICmd_unk_54, // 0x54 + ContestAICmd_unk_55, // 0x55 + ContestAICmd_get_val_812A188, // 0x56 + ContestAICmd_unk_57, // 0x57 + ContestAICmd_unk_58, // 0x58 + ContestAICmd_unk_59, // 0x59 + ContestAICmd_unk_5A, // 0x5A + ContestAICmd_unk_5B, // 0x5B + ContestAICmd_unk_5C, // 0x5C + ContestAICmd_unk_5D, // 0x5D + ContestAICmd_unk_5E, // 0x5E + ContestAICmd_unk_5F, // 0x5F + ContestAICmd_unk_60, // 0x60 + ContestAICmd_unk_61, // 0x61 + ContestAICmd_unk_62, // 0x62 + ContestAICmd_unk_63, // 0x63 + ContestAICmd_unk_64, // 0x64 + ContestAICmd_unk_65, // 0x65 + ContestAICmd_unk_66, // 0x66 + ContestAICmd_unk_67, // 0x67 + ContestAICmd_unk_68, // 0x68 + ContestAICmd_unk_69, // 0x69 + ContestAICmd_unk_6A, // 0x6A + ContestAICmd_unk_6B, // 0x6B + ContestAICmd_unk_6C, // 0x6C + ContestAICmd_unk_6D, // 0x6D + ContestAICmd_unk_6E, // 0x6E + ContestAICmd_unk_6F, // 0x6F + ContestAICmd_unk_70, // 0x70 + ContestAICmd_unk_71, // 0x71 + ContestAICmd_unk_72, // 0x72 + ContestAICmd_unk_73, // 0x73 + ContestAICmd_unk_74, // 0x74 + ContestAICmd_unk_75, // 0x75 + ContestAICmd_unk_76, // 0x76 + ContestAICmd_unk_77, // 0x77 + ContestAICmd_unk_78, // 0x78 + ContestAICmd_unk_79, // 0x79 + ContestAICmd_unk_7A, // 0x7A + ContestAICmd_unk_7B, // 0x7B + ContestAICmd_unk_7C, // 0x7C + ContestAICmd_unk_7D, // 0x7D + ContestAICmd_unk_7E, // 0x7E + ContestAICmd_unk_7F, // 0x7F + ContestAICmd_unk_80, // 0x80 + ContestAICmd_unk_81, // 0x81 + ContestAICmd_check_for_exciting_move, // 0x82 + ContestAICmd_unk_83, // 0x83 + ContestAICmd_unk_84, // 0x84 + ContestAICmd_unk_85, // 0x85 + ContestAICmd_unk_86, // 0x86 + ContestAICmd_unk_87, // 0x87 +}; + +static void ContestAI_DoAIProcessing(void); +static bool8 sub_81563B0(u8); +static void AIStackPushVar(const u8 *); +static u8 AIStackPop(void); + +void ContestAI_ResetAI(u8 var) +{ + int i; + memset(eContestAI, 0, sizeof(struct ContestAIInfo)); + + for(i = 0; i < 4; i++) + eContestAI->unk5[i] = 100; + + eContestAI->unk41 = var; + eContestAI->unk40 = 0; + eContestAI->flags = gContestMons[eContestAI->unk41].flags; +} + +u8 ContestAI_GetActionToUse(void) +{ + while(eContestAI->flags != 0) + { + if (eContestAI->flags & 1) + { + eContestAI->aiState = 0; + ContestAI_DoAIProcessing(); + } + eContestAI->flags >>= 1; + eContestAI->unk10++; + eContestAI->unk4 = 0; + } + + while (1) + { + u8 rval = Random() & 3; + u8 r2 = eContestAI->unk5[rval]; + int i; + for (i = 0; i < 4; i++) + { + if (r2 < eContestAI->unk5[i]) + break; + } + if (i == 4) + return rval; + } +} + +static void ContestAI_DoAIProcessing(void) +{ + while(eContestAI->aiState != CONTESTAI_FINISHED) + { + switch(eContestAI->aiState) + { + case CONTESTAI_DO_NOT_PROCESS: + break; + case CONTESTAI_SETTING_UP: + gAIScriptPtr = gContestAIs[eContestAI->unk10]; + + if (gContestMons[eContestAI->unk41].moves[eContestAI->unk4] == 0) + eContestAI->unk2 = 0; // don't process a move that doesn't exist. + else + eContestAI->unk2 = gContestMons[eContestAI->unk41].moves[eContestAI->unk4]; + eContestAI->aiState++; + break; + case CONTESTAI_PROCESSING: + if (eContestAI->unk2 != 0) + sContestAICmdTable[*gAIScriptPtr](); // run the command. + else + { + eContestAI->unk5[eContestAI->unk4] = 0; // don't consider a move that doesn't exist. + eContestAI->aiAction |= 1; + } + if (eContestAI->aiAction & 1) + { + eContestAI->unk4++; + if (eContestAI->unk4 < 4) + eContestAI->aiState = 0; + else + eContestAI->aiState++; + eContestAI->aiAction &= 0xFE; // TODO: Define action flags + } + break; + } + } +} + +static u8 sub_81563B0(u8 var) +{ + int i; + + for(i = 0; i < 4; i++) + if (shared192D0.turnOrder[i] == var) + break; + + return i; +} + +static void ContestAICmd_unk_00(void) +{ + s16 score = eContestAI->unk5[eContestAI->unk4] + (s8)gAIScriptPtr[1]; + + if (score > 255) + score = 255; + else if (score < 0) + score = 0; + + eContestAI->unk5[eContestAI->unk4] = score; + + gAIScriptPtr += 2; +} + +static void ContestAICmd_get_turn(void) +{ + eContestAI->scriptResult = sContest.turnNumber; + gAIScriptPtr += 1; +} + +static void ContestAICmd_unk_02(void) +{ + ContestAICmd_get_turn(); + + if (eContestAI->scriptResult < gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_03(void) +{ + ContestAICmd_get_turn(); + + if (eContestAI->scriptResult > gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_04(void) +{ + ContestAICmd_get_turn(); + + if (eContestAI->scriptResult == gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_05(void) +{ + ContestAICmd_get_turn(); + + if (eContestAI->scriptResult != gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_get_excitement(void) +{ + eContestAI->scriptResult = sContest.applauseLevel; + gAIScriptPtr += 1; +} + +static void ContestAICmd_unk_07(void) +{ + ContestAICmd_get_excitement(); + + if (eContestAI->scriptResult < gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_08(void) +{ + ContestAICmd_get_excitement(); + + if (eContestAI->scriptResult > gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_09(void) +{ + ContestAICmd_get_excitement(); + + if (eContestAI->scriptResult == gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_0A(void) +{ + ContestAICmd_get_excitement(); + + if (eContestAI->scriptResult != gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_get_user_order(void) +{ + eContestAI->scriptResult = shared192D0.turnOrder[eContestAI->unk41]; + gAIScriptPtr += 1; +} + +static void ContestAICmd_unk_0C(void) +{ + ContestAICmd_get_user_order(); + + if (eContestAI->scriptResult < gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_0D(void) +{ + ContestAICmd_get_user_order(); + + if (eContestAI->scriptResult > gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_0E(void) +{ + ContestAICmd_get_user_order(); + + if (eContestAI->scriptResult == gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_0F(void) +{ + ContestAICmd_get_user_order(); + + if (eContestAI->scriptResult != gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_get_user_condition_maybe(void) +{ + eContestAI->scriptResult = sContestantStatus[eContestAI->unk41].condition / 10; + gAIScriptPtr += 1; +} + +static void ContestAICmd_unk_11(void) +{ + ContestAICmd_get_user_condition_maybe(); + + if (eContestAI->scriptResult < gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_12(void) +{ + ContestAICmd_get_user_condition_maybe(); + + if (eContestAI->scriptResult > gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_13(void) +{ + ContestAICmd_get_user_condition_maybe(); + + if (eContestAI->scriptResult == gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_14(void) +{ + ContestAICmd_get_user_condition_maybe(); + + if (eContestAI->scriptResult != gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_15(void) +{ + eContestAI->scriptResult = sContestantStatus[eContestAI->unk41].unk4; + gAIScriptPtr += 1; +} + +static void ContestAICmd_unk_16(void) +{ + ContestAICmd_unk_15(); + + if (eContestAI->scriptResult < (s16)T1_READ_16(gAIScriptPtr + 0)) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2); + else + gAIScriptPtr += 6; +} + +static void ContestAICmd_unk_17(void) +{ + ContestAICmd_unk_15(); + + if (eContestAI->scriptResult > (s16)T1_READ_16(gAIScriptPtr + 0)) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2); + else + gAIScriptPtr += 6; +} + +static void ContestAICmd_unk_18(void) +{ + ContestAICmd_unk_15(); + + if (eContestAI->scriptResult == (s16)T1_READ_16(gAIScriptPtr + 0)) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2); + else + gAIScriptPtr += 6; +} + +static void ContestAICmd_unk_19(void) +{ + ContestAICmd_unk_15(); + + if (eContestAI->scriptResult != (s16)T1_READ_16(gAIScriptPtr + 0)) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2); + else + gAIScriptPtr += 6; +} + +static void ContestAICmd_unk_1A(void) +{ + eContestAI->scriptResult = gContestMonConditions[eContestAI->unk41]; + gAIScriptPtr += 1; +} + +static void ContestAICmd_unk_1B(void) +{ + ContestAICmd_unk_1A(); + + if (eContestAI->scriptResult < (s16)T1_READ_16(gAIScriptPtr + 0)) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2); + else + gAIScriptPtr += 6; +} + +static void ContestAICmd_unk_1C(void) +{ + ContestAICmd_unk_1A(); + + if (eContestAI->scriptResult > (s16)T1_READ_16(gAIScriptPtr + 0)) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2); + else + gAIScriptPtr += 6; +} + +static void ContestAICmd_unk_1D(void) +{ + ContestAICmd_unk_1A(); + + if (eContestAI->scriptResult == (s16)T1_READ_16(gAIScriptPtr + 0)) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2); + else + gAIScriptPtr += 6; +} + +static void ContestAICmd_unk_1E(void) +{ + ContestAICmd_unk_1A(); + + if (eContestAI->scriptResult != (s16)T1_READ_16(gAIScriptPtr + 0)) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2); + else + gAIScriptPtr += 6; +} + +static void ContestAICmd_get_contest_type(void) +{ + eContestAI->scriptResult = gSpecialVar_ContestCategory; + gAIScriptPtr += 1; +} + +static void ContestAICmd_unk_20(void) +{ + ContestAICmd_get_contest_type(); + + if (eContestAI->scriptResult == gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_21(void) +{ + ContestAICmd_get_contest_type(); + + if (eContestAI->scriptResult != gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_get_move_excitement(void) +{ + eContestAI->scriptResult = Contest_GetMoveExcitement(gContestMons[eContestAI->unk41].moves[eContestAI->unk4]); + gAIScriptPtr += 1; +} + +static void ContestAICmd_unk_23(void) +{ + ContestAICmd_get_move_excitement(); + + if (eContestAI->scriptResult < (s8)gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_24(void) +{ + ContestAICmd_get_move_excitement(); + + if (eContestAI->scriptResult > (s8)gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_25(void) +{ + ContestAICmd_get_move_excitement(); + + if (eContestAI->scriptResult == (s8)gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_26(void) +{ + ContestAICmd_get_move_excitement(); + + if (eContestAI->scriptResult != (s8)gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_get_move_effect(void) +{ + u16 move = gContestMons[eContestAI->unk41].moves[eContestAI->unk4]; + + eContestAI->scriptResult = gContestMoves[move].effect; + gAIScriptPtr += 1; +} + +static void ContestAICmd_unk_28(void) +{ + ContestAICmd_get_move_effect(); + + if (eContestAI->scriptResult == gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_29(void) +{ + ContestAICmd_get_move_effect(); + + if (eContestAI->scriptResult != gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_get_move_effect_type(void) +{ + u16 move = gContestMons[eContestAI->unk41].moves[eContestAI->unk4]; + + eContestAI->scriptResult = gContestEffects[gContestMoves[move].effect].effectType; + gAIScriptPtr += 1; +} + +static void ContestAICmd_unk_2B(void) +{ + ContestAICmd_get_move_effect_type(); + + if (eContestAI->scriptResult == gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_2C(void) +{ + ContestAICmd_get_move_effect_type(); + + if (eContestAI->scriptResult != gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_check_move_has_highest_appeal(void) +{ + int i; + u16 move = gContestMons[eContestAI->unk41].moves[eContestAI->unk4]; + u8 appeal = gContestEffects[gContestMoves[move].effect].appeal; + + for(i = 0; i < 4; i++) + { + u16 newMove = gContestMons[eContestAI->unk41].moves[i]; + if (newMove != 0 && appeal < gContestEffects[gContestMoves[newMove].effect].appeal) + break; + } + + if (i == 4) + eContestAI->scriptResult = TRUE; + else + eContestAI->scriptResult = FALSE; + + gAIScriptPtr += 1; +} + +static void ContestAICmd_unk_2E(void) +{ + ContestAICmd_check_move_has_highest_appeal(); + + if (eContestAI->scriptResult != FALSE) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +static void ContestAICmd_unk_2F(void) +{ + int i; + u16 move = gContestMons[eContestAI->unk41].moves[eContestAI->unk4]; + u8 jam = gContestEffects[gContestMoves[move].effect].jam; + + for(i = 0; i < 4; i++) + { + u16 newMove = gContestMons[eContestAI->unk41].moves[i]; + if (newMove != 0 && jam < gContestEffects[gContestMoves[newMove].effect].jam) + break; + } + + if (i == 4) + eContestAI->scriptResult = TRUE; + else + eContestAI->scriptResult = FALSE; + + gAIScriptPtr += 1; +} + +static void ContestAICmd_unk_30(void) +{ + ContestAICmd_unk_2F(); + + if (eContestAI->scriptResult != FALSE) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_31(void) +{ + u16 move = gContestMons[eContestAI->unk41].moves[eContestAI->unk4]; + + eContestAI->scriptResult = gContestEffects[gContestMoves[move].effect].appeal / 10; + gAIScriptPtr += 1; +} + +static void ContestAICmd_unk_32(void) +{ + ContestAICmd_unk_31(); + + if (eContestAI->scriptResult < gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_33(void) +{ + ContestAICmd_unk_31(); + + if (eContestAI->scriptResult > gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_34(void) +{ + ContestAICmd_unk_31(); + + if (eContestAI->scriptResult == gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_35(void) +{ + ContestAICmd_unk_31(); + + if (eContestAI->scriptResult != gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_36(void) +{ + u16 move = gContestMons[eContestAI->unk41].moves[eContestAI->unk4]; + + eContestAI->scriptResult = gContestEffects[gContestMoves[move].effect].jam / 10; + gAIScriptPtr += 1; +} + +static void ContestAICmd_unk_37(void) +{ + ContestAICmd_unk_36(); + + if (eContestAI->scriptResult < gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_38(void) +{ + ContestAICmd_unk_36(); + + if (eContestAI->scriptResult > gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_39(void) +{ + ContestAICmd_unk_36(); + + if (eContestAI->scriptResult == gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_3A(void) +{ + ContestAICmd_unk_36(); + + if (eContestAI->scriptResult != gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_get_move_used_count(void) +{ + s16 result; + u16 move = gContestMons[eContestAI->unk41].moves[eContestAI->unk4]; + + if (move != sContestantStatus[eContestAI->unk41].prevMove) + result = 0; // move is unique and not reused. + else + result = sContestantStatus[eContestAI->unk41].moveRepeatCount + 1; + + eContestAI->scriptResult = result; + gAIScriptPtr += 1; +} + +static void ContestAICmd_unk_3C(void) +{ + ContestAICmd_get_move_used_count(); + + if (eContestAI->scriptResult < gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_3D(void) +{ + ContestAICmd_get_move_used_count(); + + if (eContestAI->scriptResult > gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_3E(void) +{ + ContestAICmd_get_move_used_count(); + + if (eContestAI->scriptResult == gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_3F(void) +{ + ContestAICmd_get_move_used_count(); + + if (eContestAI->scriptResult != gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_check_combo_starter(void) +{ + u8 result = 0; + int i; + u16 move = gContestMons[eContestAI->unk41].moves[eContestAI->unk4]; + + for(i = 0; i < 4; i++) + { + if (gContestMons[eContestAI->unk41].moves[i]) + { + result = AreMovesContestCombo(move, gContestMons[eContestAI->unk41].moves[i]); + if (result) + { + result = 1; + break; + } + } + } + + if (result) + result = 1; + + eContestAI->scriptResult = result; + gAIScriptPtr += 1; +} + +static void ContestAICmd_unk_41(void) +{ + ContestAICmd_check_combo_starter(); + + if (eContestAI->scriptResult != 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +static void ContestAICmd_unk_42(void) +{ + ContestAICmd_check_combo_starter(); + + if (eContestAI->scriptResult == 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +static void ContestAICmd_check_combo_finisher(void) +{ + u8 result = 0; + int i; + u16 move = gContestMons[eContestAI->unk41].moves[eContestAI->unk4]; + + for(i = 0; i < 4; i++) + { + if (gContestMons[eContestAI->unk41].moves[i]) + { + result = AreMovesContestCombo(gContestMons[eContestAI->unk41].moves[i], move); + if (result) + { + result = 1; + break; + } + } + } + + if (result) + result = 1; + + eContestAI->scriptResult = result; + gAIScriptPtr += 1; +} + +static void ContestAICmd_unk_44(void) +{ + ContestAICmd_check_combo_finisher(); + + if (eContestAI->scriptResult != 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +static void ContestAICmd_unk_45(void) +{ + ContestAICmd_check_combo_finisher(); + + if (eContestAI->scriptResult == 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +static void ContestAICmd_check_would_finish_combo(void) +{ + u8 result = 0; + u16 move = gContestMons[eContestAI->unk41].moves[eContestAI->unk4]; + + if (sContestantStatus[eContestAI->unk41].prevMove) + result = AreMovesContestCombo(sContestantStatus[eContestAI->unk41].prevMove, move); + + if (result) + result = 1; + + eContestAI->scriptResult = result; + gAIScriptPtr += 1; +} + +static void ContestAICmd_unk_47(void) +{ + ContestAICmd_check_would_finish_combo(); + + if (eContestAI->scriptResult != 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +static void ContestAICmd_unk_48(void) +{ + ContestAICmd_check_would_finish_combo(); + + if (eContestAI->scriptResult == 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +static void ContestAICmd_get_condition(void) +{ + int var = sub_81563B0(gAIScriptPtr[1]); + + eContestAI->scriptResult = sContestantStatus[var].condition / 10; + gAIScriptPtr += 2; +} + +static void ContestAICmd_unk_4A(void) +{ + ContestAICmd_get_condition(); + + if (eContestAI->scriptResult < gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_4B(void) +{ + ContestAICmd_get_condition(); + + if (eContestAI->scriptResult > gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_4C(void) +{ + ContestAICmd_get_condition(); + + if (eContestAI->scriptResult == gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_4D(void) +{ + ContestAICmd_get_condition(); + + if (eContestAI->scriptResult != gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_get_used_combo_starter(void) +{ + u16 result = 0; + u8 var = sub_81563B0(gAIScriptPtr[1]); + + if (sub_80DE1E8(var)) + result = gContestMoves[sContestantStatus[var].prevMove].comboStarterId ? 1 : 0; + + eContestAI->scriptResult = result; + gAIScriptPtr += 2; +} + +static void ContestAICmd_unk_4F(void) +{ + ContestAICmd_get_used_combo_starter(); + + if (eContestAI->scriptResult < gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_50(void) +{ + ContestAICmd_get_used_combo_starter(); + + if (eContestAI->scriptResult > gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_51(void) +{ + ContestAICmd_get_used_combo_starter(); + + if (eContestAI->scriptResult == gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_52(void) +{ + ContestAICmd_get_used_combo_starter(); + + if (eContestAI->scriptResult != gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_check_can_participate(void) +{ + if (Contest_IsMonsTurnDisabled(sub_81563B0(gAIScriptPtr[1]))) + eContestAI->scriptResult = FALSE; + else + eContestAI->scriptResult = TRUE; + + gAIScriptPtr += 2; +} + +static void ContestAICmd_unk_54(void) +{ + ContestAICmd_check_can_participate(); + + if (eContestAI->scriptResult != 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +static void ContestAICmd_unk_55(void) +{ + ContestAICmd_check_can_participate(); + + if (eContestAI->scriptResult == 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +static void ContestAICmd_get_val_812A188(void) +{ + u8 var = sub_81563B0(gAIScriptPtr[1]); + + eContestAI->scriptResult = sContestantStatus[var].unk15_3; + gAIScriptPtr += 2; +} + +static void ContestAICmd_unk_57(void) +{ + ContestAICmd_get_val_812A188(); + + if (eContestAI->scriptResult != 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +static void ContestAICmd_unk_58(void) +{ + ContestAICmd_get_val_812A188(); + + if (eContestAI->scriptResult == 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +static void ContestAICmd_unk_59(void) +{ + u8 var = sub_81563B0(gAIScriptPtr[1]); + + eContestAI->scriptResult = sContestantStatus[var].unk4 - sContestantStatus[eContestAI->unk41].unk4; + gAIScriptPtr += 2; +} + +static void ContestAICmd_unk_5A(void) +{ + ContestAICmd_unk_59(); + + if (eContestAI->scriptResult < 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +static void ContestAICmd_unk_5B(void) +{ + ContestAICmd_unk_59(); + + if (eContestAI->scriptResult > 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +static void ContestAICmd_unk_5C(void) +{ + ContestAICmd_unk_59(); + + if (eContestAI->scriptResult == 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +static void ContestAICmd_unk_5D(void) +{ + ContestAICmd_unk_59(); + + if (eContestAI->scriptResult != 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +static void ContestAICmd_unk_5E(void) +{ + u8 var = sub_81563B0(gAIScriptPtr[1]); + + eContestAI->scriptResult = gContestMonConditions[var] - gContestMonConditions[eContestAI->unk41]; + gAIScriptPtr += 2; +} + +static void ContestAICmd_unk_5F(void) +{ + ContestAICmd_unk_5E(); + + if (eContestAI->scriptResult < 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +static void ContestAICmd_unk_60(void) +{ + ContestAICmd_unk_5E(); + + if (eContestAI->scriptResult > 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +static void ContestAICmd_unk_61(void) +{ + ContestAICmd_unk_5E(); + + if (eContestAI->scriptResult == 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +static void ContestAICmd_unk_62(void) +{ + ContestAICmd_unk_5E(); + + if (eContestAI->scriptResult != 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +static void ContestAICmd_unk_63(void) +{ + u8 var = sub_81563B0(gAIScriptPtr[1]); + u8 var2 = gAIScriptPtr[2]; + u16 move = sContest.unk19220[var2][var]; + + eContestAI->scriptResult = gContestMoves[move].effect; + gAIScriptPtr += 3; +} + +static void ContestAICmd_unk_64(void) +{ + ContestAICmd_unk_63(); + + if (eContestAI->scriptResult < gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_65(void) +{ + ContestAICmd_unk_63(); + + if (eContestAI->scriptResult > gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_66(void) +{ + ContestAICmd_unk_63(); + + if (eContestAI->scriptResult == gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_67(void) +{ + ContestAICmd_unk_63(); + + if (eContestAI->scriptResult != gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_68(void) +{ + u8 var = sub_81563B0(gAIScriptPtr[1]); + u8 var2 = gAIScriptPtr[2]; + s8 result = sContest.unk19248[var2][var]; + + eContestAI->scriptResult = result; + gAIScriptPtr += 3; +} + +static void ContestAICmd_unk_69(void) +{ + ContestAICmd_unk_68(); + + if (eContestAI->scriptResult < gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_6A(void) +{ + ContestAICmd_unk_68(); + + if (eContestAI->scriptResult > gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_6B(void) +{ + ContestAICmd_unk_68(); + + if (eContestAI->scriptResult == gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_6C(void) +{ + ContestAICmd_unk_68(); + + if (eContestAI->scriptResult != gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_6D(void) +{ + u8 var = sub_81563B0(gAIScriptPtr[1]); + u8 var2 = gAIScriptPtr[2]; + u16 move = sContest.unk19220[var2][var]; + + eContestAI->scriptResult = gContestEffects[gContestMoves[move].effect].effectType; + gAIScriptPtr += 3; +} + +static void ContestAICmd_unk_6E(void) +{ + ContestAICmd_unk_6D(); + + if (eContestAI->scriptResult == gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_6F(void) +{ + ContestAICmd_unk_6D(); + + if (eContestAI->scriptResult != gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_70(void) +{ + eContestAI->scriptArr[gAIScriptPtr[1]] = eContestAI->scriptResult; + gAIScriptPtr += 2; +} + +static void ContestAICmd_unk_71(void) +{ + eContestAI->scriptArr[gAIScriptPtr[1]] = T1_READ_16(gAIScriptPtr + 2); + gAIScriptPtr += 4; +} + +static void ContestAICmd_unk_72(void) +{ + // wtf? shouldn't T1_READ_16 work here? why the signed 8 load by gAIScriptPtr[2]? + eContestAI->scriptArr[gAIScriptPtr[1]] += ((s8)gAIScriptPtr[2] | gAIScriptPtr[3] << 8); + gAIScriptPtr += 4; +} + +static void ContestAICmd_unk_73(void) +{ + eContestAI->scriptArr[gAIScriptPtr[1]] += eContestAI->scriptArr[gAIScriptPtr[2]]; + gAIScriptPtr += 3; +} + +static void ContestAICmd_unk_74(void) +{ + eContestAI->scriptArr[gAIScriptPtr[1]] += eContestAI->scriptArr[gAIScriptPtr[2]]; + gAIScriptPtr += 3; +} + +static void ContestAICmd_unk_75(void) +{ + if (eContestAI->scriptArr[gAIScriptPtr[1]] < T1_READ_16(gAIScriptPtr + 2)) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 4); + else + gAIScriptPtr += 8; +} + +static void ContestAICmd_unk_76(void) +{ + if (eContestAI->scriptArr[gAIScriptPtr[1]] > T1_READ_16(gAIScriptPtr + 2)) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 4); + else + gAIScriptPtr += 8; +} + +static void ContestAICmd_unk_77(void) +{ + if (eContestAI->scriptArr[gAIScriptPtr[1]] == T1_READ_16(gAIScriptPtr + 2)) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 4); + else + gAIScriptPtr += 8; +} + +static void ContestAICmd_unk_78(void) +{ + if (eContestAI->scriptArr[gAIScriptPtr[1]] != T1_READ_16(gAIScriptPtr + 2)) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 4); + else + gAIScriptPtr += 8; +} + +static void ContestAICmd_unk_79(void) +{ + if (eContestAI->scriptArr[gAIScriptPtr[1]] < (eContestAI->scriptArr[gAIScriptPtr[2]])) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 3); + else + gAIScriptPtr += 7; +} + +static void ContestAICmd_unk_7A(void) +{ + if (eContestAI->scriptArr[gAIScriptPtr[1]] > (eContestAI->scriptArr[gAIScriptPtr[2]])) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 3); + else + gAIScriptPtr += 7; +} + +static void ContestAICmd_unk_7B(void) +{ + if (eContestAI->scriptArr[gAIScriptPtr[1]] == (eContestAI->scriptArr[gAIScriptPtr[2]])) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 3); + else + gAIScriptPtr += 7; +} + +static void ContestAICmd_unk_7C(void) +{ + if (eContestAI->scriptArr[gAIScriptPtr[1]] != (eContestAI->scriptArr[gAIScriptPtr[2]])) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 3); + else + gAIScriptPtr += 7; +} + +static void ContestAICmd_unk_7D(void) +{ + if ((Random() & 0xFF) < eContestAI->scriptArr[gAIScriptPtr[1]]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2); + else + gAIScriptPtr += 6; +} + +static void ContestAICmd_unk_7E(void) +{ + if ((Random() & 0xFF) > eContestAI->scriptArr[gAIScriptPtr[1]]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2); + else + gAIScriptPtr += 6; +} + +// jump +static void ContestAICmd_unk_7F(void) +{ + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); +} + +static void ContestAICmd_unk_80(void) +{ + AIStackPushVar(gAIScriptPtr + 5); + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); +} + +static void ContestAICmd_unk_81(void) +{ + if (!AIStackPop()) + eContestAI->aiAction |= 1; +} + +static void AIStackPushVar(const u8 *ptr) +{ + eContestAI->stack[eContestAI->unk40++] = (u32)ptr; +} + +static bool8 AIStackPop(void) +{ + if (eContestAI->unk40 != 0) + { + --eContestAI->unk40; + gAIScriptPtr = (u8 *)eContestAI->stack[eContestAI->unk40]; + return TRUE; + } + else + { + return FALSE; + } +} + +static void ContestAICmd_check_for_exciting_move(void) +{ + int result = 0; + int i; + + for(i = 0; i < 4; i++) + { + if (gContestMons[eContestAI->unk41].moves[i]) + { + // why is it using gSharedMem + 0x19325? that does not exist... + if (Contest_GetMoveExcitement(gContestMons[eContestAI->unk41].moves[i]) == 1) + { + result = 1; + break; + } + } + } + + eContestAI->scriptResult = result; + gAIScriptPtr += 1; +} + +static void ContestAICmd_unk_83(void) +{ + ContestAICmd_check_for_exciting_move(); + + if (eContestAI->scriptResult != 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +static void ContestAICmd_unk_84(void) +{ + ContestAICmd_check_for_exciting_move(); + + if (eContestAI->scriptResult == 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +static void ContestAICmd_unk_85(void) +{ + int result = 0; + int i; + u16 arg = T1_READ_16(gAIScriptPtr + 1); + + for(i = 0; i < 4; i++) + { + u16 move = gContestMons[eContestAI->unk41].moves[i]; + if (move == arg) + { + result = 1; + break; + } + } + + eContestAI->scriptResult = result; + gAIScriptPtr += 3; +} + +static void ContestAICmd_unk_86(void) +{ + ContestAICmd_unk_85(); + + if (eContestAI->scriptResult != 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +static void ContestAICmd_unk_87(void) +{ + ContestAICmd_unk_85(); + + if (eContestAI->scriptResult == 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} -- cgit v1.2.3 From 92c4fc6345faf9e5c8af4035103eea26164b68bd Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Wed, 15 Aug 2018 11:50:18 +0200 Subject: Contest AI clean-up --- src/contest_ai.c | 102 +++++++++++++++++++++++++++---------------------------- 1 file changed, 50 insertions(+), 52 deletions(-) (limited to 'src') diff --git a/src/contest_ai.c b/src/contest_ai.c index 059c351e9..3324ddf87 100644 --- a/src/contest_ai.c +++ b/src/contest_ai.c @@ -4,7 +4,6 @@ #include "contest_ai.h" #include "contest_effect.h" -extern u16 gSpecialVar_ContestCategory; extern u16 gContestMonConditions[]; extern const u8 *gAIScriptPtr; @@ -294,22 +293,22 @@ static bool8 sub_81563B0(u8); static void AIStackPushVar(const u8 *); static u8 AIStackPop(void); -void ContestAI_ResetAI(u8 var) +void ContestAI_ResetAI(u8 contestantAI) { int i; memset(eContestAI, 0, sizeof(struct ContestAIInfo)); - for(i = 0; i < 4; i++) + for (i = 0; i < 4; i++) eContestAI->unk5[i] = 100; - eContestAI->unk41 = var; - eContestAI->unk40 = 0; - eContestAI->flags = gContestMons[eContestAI->unk41].flags; + eContestAI->contestantId = contestantAI; + eContestAI->stackSize = 0; + eContestAI->flags = gContestMons[eContestAI->contestantId].flags; } u8 ContestAI_GetActionToUse(void) { - while(eContestAI->flags != 0) + while (eContestAI->flags != 0) { if (eContestAI->flags & 1) { @@ -338,7 +337,7 @@ u8 ContestAI_GetActionToUse(void) static void ContestAI_DoAIProcessing(void) { - while(eContestAI->aiState != CONTESTAI_FINISHED) + while (eContestAI->aiState != CONTESTAI_FINISHED) { switch(eContestAI->aiState) { @@ -347,10 +346,10 @@ static void ContestAI_DoAIProcessing(void) case CONTESTAI_SETTING_UP: gAIScriptPtr = gContestAIs[eContestAI->unk10]; - if (gContestMons[eContestAI->unk41].moves[eContestAI->unk4] == 0) + if (gContestMons[eContestAI->contestantId].moves[eContestAI->unk4] == 0) eContestAI->unk2 = 0; // don't process a move that doesn't exist. else - eContestAI->unk2 = gContestMons[eContestAI->unk41].moves[eContestAI->unk4]; + eContestAI->unk2 = gContestMons[eContestAI->contestantId].moves[eContestAI->unk4]; eContestAI->aiState++; break; case CONTESTAI_PROCESSING: @@ -379,7 +378,7 @@ static u8 sub_81563B0(u8 var) { int i; - for(i = 0; i < 4; i++) + for (i = 0; i < 4; i++) if (shared192D0.turnOrder[i] == var) break; @@ -494,7 +493,7 @@ static void ContestAICmd_unk_0A(void) static void ContestAICmd_get_user_order(void) { - eContestAI->scriptResult = shared192D0.turnOrder[eContestAI->unk41]; + eContestAI->scriptResult = shared192D0.turnOrder[eContestAI->contestantId]; gAIScriptPtr += 1; } @@ -540,7 +539,7 @@ static void ContestAICmd_unk_0F(void) static void ContestAICmd_get_user_condition_maybe(void) { - eContestAI->scriptResult = sContestantStatus[eContestAI->unk41].condition / 10; + eContestAI->scriptResult = sContestantStatus[eContestAI->contestantId].condition / 10; gAIScriptPtr += 1; } @@ -586,7 +585,7 @@ static void ContestAICmd_unk_14(void) static void ContestAICmd_unk_15(void) { - eContestAI->scriptResult = sContestantStatus[eContestAI->unk41].unk4; + eContestAI->scriptResult = sContestantStatus[eContestAI->contestantId].unk4; gAIScriptPtr += 1; } @@ -632,7 +631,7 @@ static void ContestAICmd_unk_19(void) static void ContestAICmd_unk_1A(void) { - eContestAI->scriptResult = gContestMonConditions[eContestAI->unk41]; + eContestAI->scriptResult = gContestMonConditions[eContestAI->contestantId]; gAIScriptPtr += 1; } @@ -704,7 +703,7 @@ static void ContestAICmd_unk_21(void) static void ContestAICmd_get_move_excitement(void) { - eContestAI->scriptResult = Contest_GetMoveExcitement(gContestMons[eContestAI->unk41].moves[eContestAI->unk4]); + eContestAI->scriptResult = Contest_GetMoveExcitement(gContestMons[eContestAI->contestantId].moves[eContestAI->unk4]); gAIScriptPtr += 1; } @@ -750,7 +749,7 @@ static void ContestAICmd_unk_26(void) static void ContestAICmd_get_move_effect(void) { - u16 move = gContestMons[eContestAI->unk41].moves[eContestAI->unk4]; + u16 move = gContestMons[eContestAI->contestantId].moves[eContestAI->unk4]; eContestAI->scriptResult = gContestMoves[move].effect; gAIScriptPtr += 1; @@ -778,7 +777,7 @@ static void ContestAICmd_unk_29(void) static void ContestAICmd_get_move_effect_type(void) { - u16 move = gContestMons[eContestAI->unk41].moves[eContestAI->unk4]; + u16 move = gContestMons[eContestAI->contestantId].moves[eContestAI->unk4]; eContestAI->scriptResult = gContestEffects[gContestMoves[move].effect].effectType; gAIScriptPtr += 1; @@ -807,12 +806,12 @@ static void ContestAICmd_unk_2C(void) static void ContestAICmd_check_move_has_highest_appeal(void) { int i; - u16 move = gContestMons[eContestAI->unk41].moves[eContestAI->unk4]; + u16 move = gContestMons[eContestAI->contestantId].moves[eContestAI->unk4]; u8 appeal = gContestEffects[gContestMoves[move].effect].appeal; - for(i = 0; i < 4; i++) + for (i = 0; i < 4; i++) { - u16 newMove = gContestMons[eContestAI->unk41].moves[i]; + u16 newMove = gContestMons[eContestAI->contestantId].moves[i]; if (newMove != 0 && appeal < gContestEffects[gContestMoves[newMove].effect].appeal) break; } @@ -838,12 +837,12 @@ static void ContestAICmd_unk_2E(void) static void ContestAICmd_unk_2F(void) { int i; - u16 move = gContestMons[eContestAI->unk41].moves[eContestAI->unk4]; + u16 move = gContestMons[eContestAI->contestantId].moves[eContestAI->unk4]; u8 jam = gContestEffects[gContestMoves[move].effect].jam; - for(i = 0; i < 4; i++) + for (i = 0; i < 4; i++) { - u16 newMove = gContestMons[eContestAI->unk41].moves[i]; + u16 newMove = gContestMons[eContestAI->contestantId].moves[i]; if (newMove != 0 && jam < gContestEffects[gContestMoves[newMove].effect].jam) break; } @@ -868,7 +867,7 @@ static void ContestAICmd_unk_30(void) static void ContestAICmd_unk_31(void) { - u16 move = gContestMons[eContestAI->unk41].moves[eContestAI->unk4]; + u16 move = gContestMons[eContestAI->contestantId].moves[eContestAI->unk4]; eContestAI->scriptResult = gContestEffects[gContestMoves[move].effect].appeal / 10; gAIScriptPtr += 1; @@ -916,7 +915,7 @@ static void ContestAICmd_unk_35(void) static void ContestAICmd_unk_36(void) { - u16 move = gContestMons[eContestAI->unk41].moves[eContestAI->unk4]; + u16 move = gContestMons[eContestAI->contestantId].moves[eContestAI->unk4]; eContestAI->scriptResult = gContestEffects[gContestMoves[move].effect].jam / 10; gAIScriptPtr += 1; @@ -965,12 +964,12 @@ static void ContestAICmd_unk_3A(void) static void ContestAICmd_get_move_used_count(void) { s16 result; - u16 move = gContestMons[eContestAI->unk41].moves[eContestAI->unk4]; + u16 move = gContestMons[eContestAI->contestantId].moves[eContestAI->unk4]; - if (move != sContestantStatus[eContestAI->unk41].prevMove) + if (move != sContestantStatus[eContestAI->contestantId].prevMove) result = 0; // move is unique and not reused. else - result = sContestantStatus[eContestAI->unk41].moveRepeatCount + 1; + result = sContestantStatus[eContestAI->contestantId].moveRepeatCount + 1; eContestAI->scriptResult = result; gAIScriptPtr += 1; @@ -1020,13 +1019,13 @@ static void ContestAICmd_check_combo_starter(void) { u8 result = 0; int i; - u16 move = gContestMons[eContestAI->unk41].moves[eContestAI->unk4]; + u16 move = gContestMons[eContestAI->contestantId].moves[eContestAI->unk4]; - for(i = 0; i < 4; i++) + for (i = 0; i < 4; i++) { - if (gContestMons[eContestAI->unk41].moves[i]) + if (gContestMons[eContestAI->contestantId].moves[i]) { - result = AreMovesContestCombo(move, gContestMons[eContestAI->unk41].moves[i]); + result = AreMovesContestCombo(move, gContestMons[eContestAI->contestantId].moves[i]); if (result) { result = 1; @@ -1066,13 +1065,13 @@ static void ContestAICmd_check_combo_finisher(void) { u8 result = 0; int i; - u16 move = gContestMons[eContestAI->unk41].moves[eContestAI->unk4]; + u16 move = gContestMons[eContestAI->contestantId].moves[eContestAI->unk4]; - for(i = 0; i < 4; i++) + for (i = 0; i < 4; i++) { - if (gContestMons[eContestAI->unk41].moves[i]) + if (gContestMons[eContestAI->contestantId].moves[i]) { - result = AreMovesContestCombo(gContestMons[eContestAI->unk41].moves[i], move); + result = AreMovesContestCombo(gContestMons[eContestAI->contestantId].moves[i], move); if (result) { result = 1; @@ -1111,10 +1110,10 @@ static void ContestAICmd_unk_45(void) static void ContestAICmd_check_would_finish_combo(void) { u8 result = 0; - u16 move = gContestMons[eContestAI->unk41].moves[eContestAI->unk4]; + u16 move = gContestMons[eContestAI->contestantId].moves[eContestAI->unk4]; - if (sContestantStatus[eContestAI->unk41].prevMove) - result = AreMovesContestCombo(sContestantStatus[eContestAI->unk41].prevMove, move); + if (sContestantStatus[eContestAI->contestantId].prevMove) + result = AreMovesContestCombo(sContestantStatus[eContestAI->contestantId].prevMove, move); if (result) result = 1; @@ -1305,7 +1304,7 @@ static void ContestAICmd_unk_59(void) { u8 var = sub_81563B0(gAIScriptPtr[1]); - eContestAI->scriptResult = sContestantStatus[var].unk4 - sContestantStatus[eContestAI->unk41].unk4; + eContestAI->scriptResult = sContestantStatus[var].unk4 - sContestantStatus[eContestAI->contestantId].unk4; gAIScriptPtr += 2; } @@ -1353,7 +1352,7 @@ static void ContestAICmd_unk_5E(void) { u8 var = sub_81563B0(gAIScriptPtr[1]); - eContestAI->scriptResult = gContestMonConditions[var] - gContestMonConditions[eContestAI->unk41]; + eContestAI->scriptResult = gContestMonConditions[var] - gContestMonConditions[eContestAI->contestantId]; gAIScriptPtr += 2; } @@ -1658,15 +1657,15 @@ static void ContestAICmd_unk_81(void) static void AIStackPushVar(const u8 *ptr) { - eContestAI->stack[eContestAI->unk40++] = (u32)ptr; + eContestAI->stack[eContestAI->stackSize++] = ptr; } static bool8 AIStackPop(void) { - if (eContestAI->unk40 != 0) + if (eContestAI->stackSize != 0) { - --eContestAI->unk40; - gAIScriptPtr = (u8 *)eContestAI->stack[eContestAI->unk40]; + --eContestAI->stackSize; + gAIScriptPtr = eContestAI->stack[eContestAI->stackSize]; return TRUE; } else @@ -1680,12 +1679,11 @@ static void ContestAICmd_check_for_exciting_move(void) int result = 0; int i; - for(i = 0; i < 4; i++) + for (i = 0; i < 4; i++) { - if (gContestMons[eContestAI->unk41].moves[i]) + if (gContestMons[eContestAI->contestantId].moves[i]) { - // why is it using gSharedMem + 0x19325? that does not exist... - if (Contest_GetMoveExcitement(gContestMons[eContestAI->unk41].moves[i]) == 1) + if (Contest_GetMoveExcitement(gContestMons[eContestAI->contestantId].moves[i]) == 1) { result = 1; break; @@ -1723,9 +1721,9 @@ static void ContestAICmd_unk_85(void) int i; u16 arg = T1_READ_16(gAIScriptPtr + 1); - for(i = 0; i < 4; i++) + for (i = 0; i < 4; i++) { - u16 move = gContestMons[eContestAI->unk41].moves[i]; + u16 move = gContestMons[eContestAI->contestantId].moves[i]; if (move == arg) { result = 1; -- cgit v1.2.3 From dc6cf391cec2bdf1fd0717f6ece90d3b1a55fccd Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Wed, 15 Aug 2018 12:06:23 +0200 Subject: Make contest ai compile. --- src/pokemon_summary_screen.c | 1 - 1 file changed, 1 deletion(-) (limited to 'src') diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index 7e20a2a92..53320544d 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -42,7 +42,6 @@ extern struct UnkStruct_61CC04 gUnknown_0861CC10; extern struct UnkStruct_61CC04 gUnknown_0861CBEC; extern struct UnkStruct_61CC04 gUnknown_0861CBF8; extern u16 gSummaryScreenWindow_Tilemap[]; -extern struct ContestEffect gContestEffects[]; extern struct WindowTemplate gUnknown_0861CC24; extern u8 gUnknown_0861CD2C[][3]; extern const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1]; -- cgit v1.2.3 From ac3f4fd99475912ce52fb88be76a0809d9b6fbed Mon Sep 17 00:00:00 2001 From: Diegoisawesome Date: Wed, 15 Aug 2018 11:47:10 -0700 Subject: Continue documentation and cleanup of pokemon_summary_screen --- src/pokemon.c | 6 +- src/pokemon_summary_screen.c | 226 ++++++++++++++++++++++--------------------- 2 files changed, 119 insertions(+), 113 deletions(-) (limited to 'src') diff --git a/src/pokemon.c b/src/pokemon.c index 7c010cd39..76eaf65e3 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -89,7 +89,7 @@ extern u8 GetTrainerEncounterMusicIdInBattlePyramind(u16 trainerOpponentId); extern u8 sub_81D63C8(u16 trainerOpponentId); extern u8 GetFrontierOpponentClass(u16 trainerId); extern void GetFrontierTrainerName(u8* dest, u16 trainerId); -extern void sub_81C488C(u8); +extern void SummaryScreen_SetUnknownTaskId(u8); // this file's functions static u16 CalculateBoxMonChecksum(struct BoxPokemon *boxMon); @@ -5723,7 +5723,7 @@ static void Task_PokemonSummaryAnimateAfterDelay(u8 taskId) if (--gTasks[taskId].data[3] == 0) { StartMonSummaryAnimation(READ_PTR_FROM_TASK(taskId, 0), gTasks[taskId].data[2]); - sub_81C488C(0xFF); + SummaryScreen_SetUnknownTaskId(0xFF); DestroyTask(taskId); } } @@ -5790,7 +5790,7 @@ void PokemonSummaryDoMonAnimation(struct Sprite* sprite, u16 species, bool8 oneF STORE_PTR_IN_TASK(sprite, taskId, 0); gTasks[taskId].data[2] = sMonFrontAnimIdsTable[species - 1]; gTasks[taskId].data[3] = sMonAnimationDelayTable[species - 1]; - sub_81C488C(taskId); + SummaryScreen_SetUnknownTaskId(taskId); SetSpriteCB_MonAnimDummy(sprite); } else diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index 347f38285..ef55129f4 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -87,10 +87,7 @@ static EWRAM_DATA struct UnkSummaryStruct u8 unk3E[9]; // 0x3E u32 OTID; // 0x48 } summary; - u16 bgTilemapBuffer1[0x800]; - u16 bgTilemapBuffer2[0x800]; - u16 bgTilemapBuffer3[0x800]; - u16 bgTilemapBuffer4[0x800]; + u16 bgTilemapBuffers[4][2][0x400]; u8 mode; bool8 isBoxMon; u8 curMonIndex; @@ -114,7 +111,7 @@ static EWRAM_DATA struct UnkSummaryStruct EWRAM_DATA u8 gUnknown_0203CF20 = 0; static EWRAM_DATA u8 gUnknown_0203CF21 = 0; static EWRAM_DATA u8 gFiller_0203CF22[2] = {0}; -static EWRAM_DATA u8 sUnusedTaskId = 0; +static EWRAM_DATA u8 sUnknownTaskId = 0; static EWRAM_DATA u8 gFiller_0203CF25[3] = {0}; extern const struct CompressedSpriteSheet gMonFrontPicTable[]; @@ -131,8 +128,8 @@ struct UnkStruct_61CC04 // forward declarations bool8 sub_81B1250(void); -bool8 sub_81BFB10(void); -void sub_81BFAE4(void); +static bool8 SummaryScreen_LoadGraphics(void); +static void SummaryScreen_LoadingCB2(void); static void InitBGs(void); u8 sub_81BFEB0(void); void CopyMonToSummaryStruct(struct Pokemon* a); @@ -183,10 +180,10 @@ void sub_81C25E8(void); void sub_81C2628(void); void sub_81C2794(void); void sub_81C27DC(struct Pokemon *mon, u16 a); -void PrintRentalMonStatsPage(void); +static void PrintPageNamesAndStatsPage(void); void sub_81C2AFC(u8 a); void sub_81C2C38(u8 a); -void sub_81C2D68(u8 a); +void SummaryScreen_RemoveWindowByIndex(u8 a); void sub_81C2D9C(u8 a); void sub_81C2DE4(u8 a); void sub_81C2E00(void); @@ -220,8 +217,8 @@ void sub_81C39F0(u8 taskId); void PrintMoveNameAndPP(u8 a); void sub_81C3D08(void); void sub_81C3D54(u8 taskId); -void sub_81C3E2C(u8 a); -void sub_81C3E9C(u16 a); +void PrintContestMoveDescription(u8 a); +void PrintMoveDetails(u16 a); void PrintNewMoveDetailsOrCancelText(void); void sub_81C4064(void); void sub_81C40A0(u8 a, u8 b); @@ -239,13 +236,13 @@ void sub_81C4568(u8 a, u8 b); u8 sub_81C45F4(struct Pokemon *a, s16 *b); u8 sub_81C47B4(struct Pokemon *unused); void sub_81C4844(struct Sprite *); -void sub_81C488C(u8 a); -void DestoryUnusedTask(void); +void SummaryScreen_SetUnknownTaskId(u8 a); +void SummaryScreen_DestroyUnknownTask(void); void sub_81C48F0(void); -void sub_81C4984(struct Pokemon *mon); -void sub_81C49E0(struct Pokemon *mon); -void sub_81C4A08(struct Pokemon *mon); -void sub_81C4A88(void); +void CreateMonMarkingsSprite(struct Pokemon *mon); +void RemoveAndCreateMonMarkingsSprite(struct Pokemon *mon); +void CreateCaughtBallSprite(struct Pokemon *mon); +void CreateSetStatusSprite(void); void sub_81C4AF8(u8 a); void sub_81C4BE4(struct Sprite *sprite); void sub_81C4C60(u8 a); @@ -635,7 +632,7 @@ static const struct SpriteTemplate gUnknown_0861D084 = .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCallbackDummy }; - const struct OamData gOamData_861D09C = +static const struct OamData gOamData_861D09C = { .y = 0, .affineMode = 0, @@ -679,7 +676,7 @@ static const union AnimCmd gSpriteAnim_861D0D4[] = { ANIMCMD_FRAME(24, 0, FALSE, FALSE), ANIMCMD_END }; - const union AnimCmd *const gSpriteAnimTable_861D0DC[] = { +static const union AnimCmd *const gSpriteAnimTable_861D0DC[] = { gSpriteAnim_861D0A4, gSpriteAnim_861D0AC, gSpriteAnim_861D0B4, @@ -746,12 +743,12 @@ void ShowPokemonSummaryScreen(u8 mode, void *mons, u8 monIndex, u8 maxMonIndex, } gUnknown_0203CF1C->currPageIndex = gUnknown_0203CF1C->minPageIndex; - sub_81C488C(-1); + SummaryScreen_SetUnknownTaskId(-1); if (gMonSpritesGfxPtr == 0) sub_806F2AC(0, 0); - SetMainCallback2(sub_81BFAE4); + SetMainCallback2(SummaryScreen_LoadingCB2); } void ShowSelectMovePokemonSummaryScreen(struct Pokemon *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void), u16 newMove) @@ -766,7 +763,7 @@ void ShowPokemonSummaryScreenSet40EF(u8 mode, struct BoxPokemon *mons, u8 monInd gUnknown_0203CF1C->unk40EF = TRUE; } -void sub_81BFAB4(void) +static void SummaryScreen_MainCB2(void) { RunTasks(); AnimateSprites(); @@ -775,19 +772,19 @@ void sub_81BFAB4(void) UpdatePaletteFade(); } -void sub_81BFAD0(void) +static void SummaryScreen_VBlank(void) { LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); } -void sub_81BFAE4(void) +static void SummaryScreen_LoadingCB2(void) { - while (sub_81221EC() != TRUE && sub_81BFB10() != TRUE && sub_81221AC() != TRUE); + while (sub_81221EC() != TRUE && SummaryScreen_LoadGraphics() != TRUE && sub_81221AC() != TRUE); } -bool8 sub_81BFB10(void) +static bool8 SummaryScreen_LoadGraphics(void) { switch (gMain.state) { @@ -845,7 +842,7 @@ bool8 sub_81BFB10(void) gMain.state++; break; case 12: - PrintRentalMonStatsPage(); + PrintPageNamesAndStatsPage(); gMain.state++; break; case 13: @@ -875,15 +872,15 @@ bool8 sub_81BFB10(void) } break; case 18: - sub_81C4984(&gUnknown_0203CF1C->currentMon); + CreateMonMarkingsSprite(&gUnknown_0203CF1C->currentMon); gMain.state++; break; case 19: - sub_81C4A08(&gUnknown_0203CF1C->currentMon); + CreateCaughtBallSprite(&gUnknown_0203CF1C->currentMon); gMain.state++; break; case 20: - sub_81C4A88(); + CreateSetStatusSprite(); gMain.state++; break; case 21: @@ -907,8 +904,8 @@ bool8 sub_81BFB10(void) gMain.state++; break; default: - SetVBlankCallback(sub_81BFAD0); - SetMainCallback2(sub_81BFAB4); + SetVBlankCallback(SummaryScreen_VBlank); + SetMainCallback2(SummaryScreen_MainCB2); return TRUE; } return FALSE; @@ -918,9 +915,9 @@ static void InitBGs(void) { ResetBgsAndClearDma3BusyFlags(0); InitBgsFromTemplates(0, gUnknown_0861CBB4, ARRAY_COUNT(gUnknown_0861CBB4)); - SetBgTilemapBuffer(1, &gUnknown_0203CF1C->bgTilemapBuffer3); - SetBgTilemapBuffer(2, &gUnknown_0203CF1C->bgTilemapBuffer2); - SetBgTilemapBuffer(3, &gUnknown_0203CF1C->bgTilemapBuffer1); + SetBgTilemapBuffer(1, gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0]); + SetBgTilemapBuffer(2, gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_SKILLS][0]); + SetBgTilemapBuffer(3, gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_INFO][0]); ResetAllBgsCoordinates(); schedule_bg_copy_tilemap_to_vram(1); schedule_bg_copy_tilemap_to_vram(2); @@ -945,24 +942,24 @@ bool8 sub_81BFEB0(void) case 1: if (free_temp_tile_data_buffers_if_possible() != 1) { - LZDecompressWram(&gUnknown_08D9862C, &gUnknown_0203CF1C->bgTilemapBuffer1[0]); + LZDecompressWram(&gUnknown_08D9862C, gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_INFO][0]); gUnknown_0203CF1C->unk40F0++; } break; case 2: - LZDecompressWram(&gUnknown_08D98CC8, &gUnknown_0203CF1C->bgTilemapBuffer1[0x400]); + LZDecompressWram(&gUnknown_08D98CC8, gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_INFO][1]); gUnknown_0203CF1C->unk40F0++; break; case 3: - LZDecompressWram(&gUnknown_08D987FC, &gUnknown_0203CF1C->bgTilemapBuffer2[0x400]); + LZDecompressWram(&gUnknown_08D987FC, gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_SKILLS][1]); gUnknown_0203CF1C->unk40F0++; break; case 4: - LZDecompressWram(&gUnknown_08D9898C, &gUnknown_0203CF1C->bgTilemapBuffer3[0x400]); + LZDecompressWram(&gUnknown_08D9898C, gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][1]); gUnknown_0203CF1C->unk40F0++; break; case 5: - LZDecompressWram(&gUnknown_08D98B28, &gUnknown_0203CF1C->bgTilemapBuffer4[0x400]); + LZDecompressWram(&gUnknown_08D98B28, gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][1]); gUnknown_0203CF1C->unk40F0++; break; case 6: @@ -1087,7 +1084,7 @@ bool8 ExtractMonDataToSummaryStruct(struct Pokemon *a) void sub_81C0348(void) { - if (gUnknown_0203CF1C->currPageIndex != 2 && gUnknown_0203CF1C->currPageIndex != 3) + if (gUnknown_0203CF1C->currPageIndex != PSS_PAGE_BATTLE_MOVES && gUnknown_0203CF1C->currPageIndex != PSS_PAGE_CONTEST_MOVES) { sub_81C1DA4(0, 255); sub_81C1EFC(0, 255, 0); @@ -1095,10 +1092,10 @@ void sub_81C0348(void) else { sub_81C240C(gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->firstMoveIndex]); - sub_81C2194(&gUnknown_0203CF1C->bgTilemapBuffer3[0], 3, 0); - sub_81C2194(&gUnknown_0203CF1C->bgTilemapBuffer4[0], 1, 0); - SetBgTilemapBuffer(1, &gUnknown_0203CF1C->bgTilemapBuffer4); - SetBgTilemapBuffer(2, &gUnknown_0203CF1C->bgTilemapBuffer3); + sub_81C2194(gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0], 3, 0); + sub_81C2194(gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0], 1, 0); + SetBgTilemapBuffer(1, gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0]); + SetBgTilemapBuffer(2, gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0]); ChangeBgX(2, 0x10000, 1); ClearWindowTilemap(19); ClearWindowTilemap(13); @@ -1109,7 +1106,7 @@ void sub_81C0348(void) } else { - if (gUnknown_0203CF1C->currPageIndex != 2 && gUnknown_0203CF1C->currPageIndex != 3) + if (gUnknown_0203CF1C->currPageIndex != PSS_PAGE_BATTLE_MOVES && gUnknown_0203CF1C->currPageIndex != PSS_PAGE_CONTEST_MOVES) PutWindowTilemap(13); } sub_81C2524(); @@ -1134,7 +1131,7 @@ void sub_81C0484(u8 taskId) { SetMainCallback2(gUnknown_0203CF1C->callback); gUnknown_0203CF20 = gUnknown_0203CF1C->curMonIndex; - DestoryUnusedTask(); + SummaryScreen_DestroyUnknownTask(); ResetSpriteData(); FreeAllSpritePalettes(); StopCryAndClearCrySongs(); @@ -1168,9 +1165,9 @@ void sub_81C0510(u8 taskId) } else if (gMain.newKeys & A_BUTTON) { - if (gUnknown_0203CF1C->currPageIndex != 1) + if (gUnknown_0203CF1C->currPageIndex != PSS_PAGE_SKILLS) { - if (gUnknown_0203CF1C->currPageIndex == 0) + if (gUnknown_0203CF1C->currPageIndex == PSS_PAGE_INFO) { sub_81C48F0(); PlaySE(SE_SELECT); @@ -1200,7 +1197,7 @@ void sub_81C0604(u8 taskId, s8 a) { if (gUnknown_0203CF1C->isBoxMon == TRUE) { - if (gUnknown_0203CF1C->currPageIndex != 0) + if (gUnknown_0203CF1C->currPageIndex != PSS_PAGE_INFO) { if (a == 1) a = 0; @@ -1252,7 +1249,7 @@ void sub_81C0704(u8 taskId) StopCryAndClearCrySongs(); break; case 1: - DestoryUnusedTask(); + SummaryScreen_DestroyUnknownTask(); DestroySpriteAndFreeResources(&gSprites[gUnknown_0203CF1C->spriteIds[0]]); break; case 2: @@ -1267,10 +1264,10 @@ void sub_81C0704(u8 taskId) return; break; case 5: - sub_81C49E0(&gUnknown_0203CF1C->currentMon); + RemoveAndCreateMonMarkingsSprite(&gUnknown_0203CF1C->currentMon); break; case 6: - sub_81C4A08(&gUnknown_0203CF1C->currentMon); + CreateCaughtBallSprite(&gUnknown_0203CF1C->currentMon); break; case 7: if (gUnknown_0203CF1C->summary.unk7) @@ -1314,13 +1311,14 @@ s8 sub_81C08F8(s8 a) { struct Pokemon *mon = gUnknown_0203CF1C->monList.mons; - if (gUnknown_0203CF1C->currPageIndex == 0) + if (gUnknown_0203CF1C->currPageIndex == PSS_PAGE_INFO) { if (a == -1 && gUnknown_0203CF1C->curMonIndex == 0) return -1; - if (a == 1 && gUnknown_0203CF1C->curMonIndex >= gUnknown_0203CF1C->maxMonIndex) + else if (a == 1 && gUnknown_0203CF1C->curMonIndex >= gUnknown_0203CF1C->maxMonIndex) return -1; - return gUnknown_0203CF1C->curMonIndex + a; + else + return gUnknown_0203CF1C->curMonIndex + a; } else { @@ -1419,7 +1417,7 @@ void sub_81C0B8C(u8 taskId) schedule_bg_copy_tilemap_to_vram(2); } ChangeBgX(data[1], 0, 0); - SetBgTilemapBuffer(data[1], (u8*)gUnknown_0203CF1C + ((gUnknown_0203CF1C->currPageIndex << 12) + 0xBC)); + SetBgTilemapBuffer(data[1], gUnknown_0203CF1C->bgTilemapBuffers[gUnknown_0203CF1C->currPageIndex][0]); ShowBg(1); ShowBg(2); } @@ -1512,9 +1510,9 @@ void sub_81C0E48(u8 taskId) ClearWindowTilemap(5); PutWindowTilemap(6); } - sub_81C2194(&gUnknown_0203CF1C->bgTilemapBuffer3[0], 3, 0); - sub_81C2194(&gUnknown_0203CF1C->bgTilemapBuffer4[0], 1, 0); - sub_81C3E9C(move); + sub_81C2194(gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0], 3, 0); + sub_81C2194(gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0], 1, 0); + PrintMoveDetails(move); PrintNewMoveDetailsOrCancelText(); sub_81C44F0(); schedule_bg_copy_tilemap_to_vram(0); @@ -1605,7 +1603,7 @@ void sub_81C1070(s16 *a, s8 b, u8 *c) sub_81C240C(move); schedule_bg_copy_tilemap_to_vram(1); schedule_bg_copy_tilemap_to_vram(2); - sub_81C3E9C(move); + PrintMoveDetails(move); if ((*c == 4 && gUnknown_0203CF1C->newMove == MOVE_NONE) || a[1] == 1) { ClearWindowTilemap(19); @@ -1635,9 +1633,9 @@ void sub_81C11F4(u8 taskId) sub_81C4C60(8); ClearWindowTilemap(6); PutWindowTilemap(5); - sub_81C3E9C(0); - sub_81C2194(&gUnknown_0203CF1C->bgTilemapBuffer3[0], 3, 1); - sub_81C2194(&gUnknown_0203CF1C->bgTilemapBuffer4[0], 1, 1); + PrintMoveDetails(0); + sub_81C2194(gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0], 3, 1); + sub_81C2194(gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0], 1, 1); sub_81C4064(); if (gUnknown_0203CF1C->firstMoveIndex != MAX_MON_MOVES) { @@ -1721,7 +1719,7 @@ void sub_81C13B0(u8 taskId, bool8 b) } move = gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->firstMoveIndex]; - sub_81C3E9C(move); + PrintMoveDetails(move); sub_81C240C(move); schedule_bg_copy_tilemap_to_vram(1); schedule_bg_copy_tilemap_to_vram(2); @@ -2288,7 +2286,7 @@ void sub_81C1940(u8 taskId) if (!gSprites[gUnknown_0203CF1C->spriteIds[2]].invisible) ClearWindowTilemap(13); move = gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->firstMoveIndex]; - sub_81C3E9C(move); + PrintMoveDetails(move); schedule_bg_copy_tilemap_to_vram(0); sub_81C1DA4(9, -3); sub_81C1EFC(9, -3, move); @@ -2402,7 +2400,7 @@ void sub_81C1DA4(u16 a, s16 b) b = gUnknown_0861CC04.field_6; if (b == 0 || b == gUnknown_0861CC04.field_6) { - sub_81C1CB0(&gUnknown_0861CC04, &gUnknown_0203CF1C->bgTilemapBuffer3[0], b, 1); + sub_81C1CB0(&gUnknown_0861CC04, gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0], b, 1); } else { @@ -2428,7 +2426,7 @@ void sub_81C1E20(u8 taskId) { data[1] = gUnknown_0861CC04.field_6; } - sub_81C1CB0(&gUnknown_0861CC04, &gUnknown_0203CF1C->bgTilemapBuffer3[0], data[1], 1); + sub_81C1CB0(&gUnknown_0861CC04, gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0], data[1], 1); if (data[1] <= 0 || data[1] >= gUnknown_0861CC04.field_6) { if (data[0] < 0) @@ -2454,7 +2452,7 @@ void sub_81C1EFC(u16 a, s16 b, u16 move) if (b > gUnknown_0861CC10.field_6) b = gUnknown_0861CC10.field_6; if (b == 0 || b == gUnknown_0861CC10.field_6) - sub_81C1CB0(&gUnknown_0861CC10, &gUnknown_0203CF1C->bgTilemapBuffer4[0], b, 1); + sub_81C1CB0(&gUnknown_0861CC10, gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0], b, 1); else { u8 taskId = FindTaskIdByFunc(sub_81C1F80); @@ -2478,7 +2476,7 @@ void sub_81C1F80(u8 taskId) { data[1] = gUnknown_0861CC10.field_6; } - sub_81C1CB0(&gUnknown_0861CC10, &gUnknown_0203CF1C->bgTilemapBuffer4[0], data[1], 1); + sub_81C1CB0(&gUnknown_0861CC10, gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0], data[1], 1); if (data[1] <= 0 || data[1] >= gUnknown_0861CC10.field_6) { if (data[0] < 0) @@ -2508,8 +2506,8 @@ void sub_81C2074(u16 a, s16 b) b = gUnknown_0861CBEC.field_6; if (b == 0 || b == gUnknown_0861CBEC.field_6) { - sub_81C1CB0(&gUnknown_0861CBEC, &gUnknown_0203CF1C->bgTilemapBuffer1[0], b, 0); - sub_81C1CB0(&gUnknown_0861CBF8, &gUnknown_0203CF1C->bgTilemapBuffer1[0], b, 0); + sub_81C1CB0(&gUnknown_0861CBEC, gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_INFO][0], b, 0); + sub_81C1CB0(&gUnknown_0861CBF8, gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_INFO][0], b, 0); } else { @@ -2527,14 +2525,14 @@ void sub_81C20F0(u8 taskId) data[1] = 0; else if (data[1] > gUnknown_0861CBEC.field_6) data[1] = gUnknown_0861CBEC.field_6; - sub_81C1CB0(&gUnknown_0861CBEC, &gUnknown_0203CF1C->bgTilemapBuffer1[0], data[1], 0); - sub_81C1CB0(&gUnknown_0861CBF8, &gUnknown_0203CF1C->bgTilemapBuffer1[0], data[1], 0); + sub_81C1CB0(&gUnknown_0861CBEC, gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_INFO][0], data[1], 0); + sub_81C1CB0(&gUnknown_0861CBF8, gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_INFO][0], data[1], 0); schedule_bg_copy_tilemap_to_vram(3); if (data[1] <= 0 || data[1] >= gUnknown_0861CBEC.field_6) { if (data[0] < 0) { - sub_81C4A88(); + CreateSetStatusSprite(); PutWindowTilemap(13); schedule_bg_copy_tilemap_to_vram(0); } @@ -2573,13 +2571,13 @@ void sub_81C2228(struct Pokemon *mon) { if (!CheckPartyPokerus(mon, 0) && CheckPartyHasHadPokerus(mon, 0)) { - gUnknown_0203CF1C->bgTilemapBuffer1[0x223] = 0x2C; - gUnknown_0203CF1C->bgTilemapBuffer1[0x623] = 0x2C; + gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_INFO][0][0x223] = 0x2C; + gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_INFO][1][0x223] = 0x2C; } else { - gUnknown_0203CF1C->bgTilemapBuffer1[0x223] = 0x81A; - gUnknown_0203CF1C->bgTilemapBuffer1[0x623] = 0x81A; + gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_INFO][0][0x223] = 0x81A; + gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_INFO][1][0x223] = 0x81A; } schedule_bg_copy_tilemap_to_vram(3); } @@ -2614,7 +2612,7 @@ void sub_81C22CC(struct Pokemon *unused) r6r7 = 0; } - r9 = &gUnknown_0203CF1C->bgTilemapBuffer2[0x655]; + r9 = &gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_SKILLS][1][0x255]; for (i = 0; i < 8; i++) { if (r6r7 > 7) @@ -2626,7 +2624,7 @@ void sub_81C22CC(struct Pokemon *unused) r6r7 = 0; } - if (GetBgTilemapBuffer(1) == gUnknown_0203CF1C->bgTilemapBuffer2) + if (GetBgTilemapBuffer(1) == gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_SKILLS][0]) schedule_bg_copy_tilemap_to_vram(1); else schedule_bg_copy_tilemap_to_vram(2); @@ -2634,7 +2632,7 @@ void sub_81C22CC(struct Pokemon *unused) void sub_81C240C(u16 move) { - u16* tilemap = &gUnknown_0203CF1C->bgTilemapBuffer4[0x400]; + u16 *tilemap = gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][1]; u8 i; u8 effectValue; @@ -2778,10 +2776,10 @@ void sub_81C27DC(struct Pokemon *mon, u16 a) u8 gender = GetMonGender(mon); switch (gender) { - case 0: + case MON_MALE: SummaryScreen_PrintTextOnWindow(19, &gText_MaleSymbol[0], 57, 17, 0, 3); break; - case 0xFE: + case MON_FEMALE: SummaryScreen_PrintTextOnWindow(19, &gText_FemaleSymbol[0], 57, 17, 0, 4); break; } @@ -2793,7 +2791,7 @@ void PrintAOrBButtonIcon(u8 windowId, bool8 bButton, u32 x) BlitBitmapToWindow(windowId, (bButton) ? gUnknown_0861CDD3 : gUnknown_0861CDD3 - 0x80, x, 0, 16, 16); } -void PrintRentalMonStatsPage(void) +static void PrintPageNamesAndStatsPage(void) { int stringXPos; int iconXPos; @@ -2804,7 +2802,7 @@ void PrintRentalMonStatsPage(void) SummaryScreen_PrintTextOnWindow(2, gText_BattleMoves, 2, 1, 0, 1); SummaryScreen_PrintTextOnWindow(3, gText_ContestMoves, 2, 1, 0, 1); - stringXPos = GetStringRightAlignXOffset(1, gText_Cancel2, 0x3E); + stringXPos = GetStringRightAlignXOffset(1, gText_Cancel2, 62); iconXPos = stringXPos - 16; if (iconXPos < 0) iconXPos = 0; @@ -2851,10 +2849,12 @@ void PrintRentalMonStatsPage(void) void sub_81C2AFC(u8 a) { u8 i; + ClearWindowTilemap(0); ClearWindowTilemap(1); ClearWindowTilemap(2); ClearWindowTilemap(3); + switch (a) { case 0: @@ -2895,10 +2895,12 @@ void sub_81C2AFC(u8 a) } break; } + for (i = 0; i < 8; i++) { PutWindowTilemap(gUnknown_0203CF1C->windowIds[i]); } + schedule_bg_copy_tilemap_to_vram(0); } @@ -2941,8 +2943,12 @@ void sub_81C2C38(u8 a) } break; } + for (i = 0; i < 8; i++) - sub_81C2D68(i); + { + SummaryScreen_RemoveWindowByIndex(i); + } + schedule_bg_copy_tilemap_to_vram(0); } @@ -2957,9 +2963,9 @@ u8 AddWindowFromTemplateList(const struct WindowTemplate *template, u8 templateI return *windowIdPtr; } -void sub_81C2D68(u8 a) +void SummaryScreen_RemoveWindowByIndex(u8 windowIndex) { - u8 *windowIdPtr = &(gUnknown_0203CF1C->windowIds[a]); + u8 *windowIdPtr = &(gUnknown_0203CF1C->windowIds[windowIndex]); if (*windowIdPtr != 0xFF) { ClearWindowTilemap(*windowIdPtr); @@ -3428,11 +3434,11 @@ void sub_81C3984(void) if (gUnknown_0203CF1C->firstMoveIndex == MAX_MON_MOVES) { if (gUnknown_0203CF1C->newMove != MOVE_NONE) - sub_81C3E9C(gUnknown_0203CF1C->newMove); + PrintMoveDetails(gUnknown_0203CF1C->newMove); } else { - sub_81C3E9C(gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->firstMoveIndex]); + PrintMoveDetails(gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->firstMoveIndex]); } } } @@ -3472,7 +3478,7 @@ void sub_81C39F0(u8 taskId) if (gUnknown_0203CF1C->mode == PSS_MODE_SELECT_MOVE) { if (gUnknown_0203CF1C->newMove != MOVE_NONE || gUnknown_0203CF1C->firstMoveIndex != MAX_MON_MOVES) - sub_81C3E9C(data[1]); + PrintMoveDetails(data[1]); } break; case 8: @@ -3561,7 +3567,7 @@ void sub_81C3D08(void) if (gUnknown_0203CF1C->mode == PSS_MODE_SELECT_MOVE) { PrintNewMoveDetailsOrCancelText(); - sub_81C3E2C(gUnknown_0203CF1C->firstMoveIndex); + PrintContestMoveDescription(gUnknown_0203CF1C->firstMoveIndex); } } @@ -3592,7 +3598,7 @@ void sub_81C3D54(u8 taskId) if (gUnknown_0203CF1C->mode == PSS_MODE_SELECT_MOVE) { if (gUnknown_0203CF1C->newMove != MOVE_NONE || gUnknown_0203CF1C->firstMoveIndex != MAX_MON_MOVES) - sub_81C3E2C(gUnknown_0203CF1C->firstMoveIndex); + PrintContestMoveDescription(gUnknown_0203CF1C->firstMoveIndex); } break; case 6: @@ -3602,7 +3608,7 @@ void sub_81C3D54(u8 taskId) data[0]++; } -void sub_81C3E2C(u8 moveSlot) +void PrintContestMoveDescription(u8 moveSlot) { u16 move; @@ -3618,7 +3624,7 @@ void sub_81C3E2C(u8 moveSlot) } } -void sub_81C3E9C(u16 move) +void PrintMoveDetails(u16 move) { u8 windowId = AddWindowFromTemplateList(gUnknown_0861CD14, 2); FillWindowPixelBuffer(windowId, 0); @@ -3707,7 +3713,7 @@ void sub_81C4190(void) gUnknown_0203CF1C->spriteIds[i] |= 0xFF; } -void sub_81C41C0(u8 spriteArrayId) +void DestroySpriteInArray(u8 spriteArrayId) { if (gUnknown_0203CF1C->spriteIds[spriteArrayId] != 0xFF) { @@ -3966,21 +3972,21 @@ void sub_81C4844(struct Sprite *sprite) } } -void sub_81C488C(u8 a0) +void SummaryScreen_SetUnknownTaskId(u8 a0) { - sUnusedTaskId = a0; + sUnknownTaskId = a0; } -void DestoryUnusedTask(void) +void SummaryScreen_DestroyUnknownTask(void) { - if (sUnusedTaskId != 0xFF) + if (sUnknownTaskId != 0xFF) { - DestroyTask(sUnusedTaskId); - sUnusedTaskId = 0xFF; + DestroyTask(sUnknownTaskId); + sUnknownTaskId = 0xFF; } } -bool32 sub_81C48B4(void) +bool32 DoesSpriteHaveCallback(void) { if (gSprites[gUnknown_0203CF1C->spriteIds[0]].callback == SpriteCallbackDummy) { @@ -4009,7 +4015,7 @@ void sub_81C48F0(void) } } -void sub_81C4984(struct Pokemon *mon) +void CreateMonMarkingsSprite(struct Pokemon *mon) { struct Sprite *sprite = sub_811FF94(30003, 30003, gUnknown_0861D120); @@ -4024,14 +4030,14 @@ void sub_81C4984(struct Pokemon *mon) } } -void sub_81C49E0(struct Pokemon *mon) +void RemoveAndCreateMonMarkingsSprite(struct Pokemon *mon) { DestroySprite(gUnknown_0203CF1C->markingsSprite); FreeSpriteTilesByTag(30003); - sub_81C4984(mon); + CreateMonMarkingsSprite(mon); } -void sub_81C4A08(struct Pokemon *mon) +void CreateCaughtBallSprite(struct Pokemon *mon) { u8 ball = ItemIdToBallId(GetMonData(mon, MON_DATA_POKEBALL)); @@ -4041,7 +4047,7 @@ void sub_81C4A08(struct Pokemon *mon) gSprites[gUnknown_0203CF1C->spriteIds[1]].oam.priority = 3; } -void sub_81C4A88(void) +void CreateSetStatusSprite(void) { u8 *spriteId = &gUnknown_0203CF1C->spriteIds[2]; u8 anim; @@ -4134,7 +4140,7 @@ void sub_81C4C60(u8 a0) u8 i; for (i = 0; i < 10; i++) { - sub_81C41C0(a0 + i); + DestroySpriteInArray(a0 + i); } } -- cgit v1.2.3 From 8896b54e8f45528fc6c21cd55cdace2ad03b2796 Mon Sep 17 00:00:00 2001 From: Tetrable Date: Wed, 15 Aug 2018 20:10:28 +0100 Subject: Add national/hoenn dex defines, update dex arrays --- src/pokemon.c | 1250 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 1247 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/pokemon.c b/src/pokemon.c index 7c010cd39..585071254 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -112,9 +112,1253 @@ EWRAM_DATA struct Unknown_806F160_Struct *gUnknown_020249B4[2] = {NULL}; #include "data/battle_moves.h" static const u8 sUnreferencedData[] = {0x34, 0x00, 0x10, 0x00, 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00}; -const u16 gSpeciesToHoennPokedexNum[] = {203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 156, 157, 112, 113, 227, 228, 229, 230, 231, 232, 233, 234, 153, 154, 138, 139, 63, 64, 88, 89, 90, 235, 236, 237, 238, 239, 240, 241, 242, 158, 159, 243, 244, 245, 246, 247, 248, 249, 39, 40, 41, 73, 74, 75, 250, 251, 252, 66, 67, 57, 58, 59, 253, 254, 255, 256, 82, 83, 257, 92, 93, 258, 259, 106, 107, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 84, 85, 270, 271, 272, 273, 274, 275, 276, 108, 109, 169, 170, 277, 278, 279, 184, 185, 50, 51, 143, 144, 280, 281, 282, 283, 284, 167, 285, 52, 53, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 65, 181, 182, 155, 324, 137, 325, 326, 162, 163, 327, 328, 329, 91, 55, 56, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 161, 164, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 168, 357, 358, 359, 103, 104, 360, 361, 180, 362, 363, 364, 365, 115, 366, 367, 186, 165, 166, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 42, 43, 44, 25, 26, 34, 35, 114, 27, 28, 32, 33, 99, 100, 61, 62, 145, 131, 132, 60, 105, 68, 127, 128, 183, 129, 130, 140, 141, 97, 98, 116, 117, 118, 48, 49, 78, 79, 101, 102, 173, 174, 175, 119, 120, 171, 172, 125, 126, 54, 110, 111, 80, 81, 69, 76, 77, 121, 122, 160, 148, 149, 94, 36, 37, 38, 95, 96, 150, 45, 46, 47, 176, 177, 178, 152, 146, 147, 124, 123, 179, 70, 71, 72, 142, 86, 87, 133, 134, 135, 136, 29, 30, 31, 187, 188, 189, 190, 191, 192, 193, 194, 195, 198, 199, 200, 196, 197, 201, 202, 151}; -const u16 gSpeciesToNationalPokedexNum[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 290, 291, 292, 276, 277, 285, 286, 327, 278, 279, 283, 284, 320, 321, 300, 301, 352, 343, 344, 299, 324, 302, 339, 340, 370, 341, 342, 349, 350, 318, 319, 328, 329, 330, 296, 297, 309, 310, 322, 323, 363, 364, 365, 331, 332, 361, 362, 337, 338, 298, 325, 326, 311, 312, 303, 307, 308, 333, 334, 360, 355, 356, 315, 287, 288, 289, 316, 317, 357, 293, 294, 295, 366, 367, 368, 359, 353, 354, 336, 335, 369, 304, 305, 306, 351, 313, 314, 345, 346, 347, 348, 280, 281, 282, 371, 372, 373, 374, 375, 376, 377, 378, 379, 382, 383, 384, 380, 381, 385, 386, 358}; -const u16 gHoennToNationalOrder[] = {252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 63, 64, 65, 290, 291, 292, 293, 294, 295, 296, 297, 118, 119, 129, 130, 298, 183, 184, 74, 75, 76, 299, 300, 301, 41, 42, 169, 72, 73, 302, 303, 304, 305, 306, 66, 67, 68, 307, 308, 309, 310, 311, 312, 81, 82, 100, 101, 313, 314, 43, 44, 45, 182, 84, 85, 315, 316, 317, 318, 319, 320, 321, 322, 323, 218, 219, 324, 88, 89, 109, 110, 325, 326, 27, 28, 327, 227, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 174, 39, 40, 349, 350, 351, 120, 121, 352, 353, 354, 355, 356, 357, 358, 359, 37, 38, 172, 25, 26, 54, 55, 360, 202, 177, 178, 203, 231, 232, 127, 214, 111, 112, 361, 362, 363, 364, 365, 366, 367, 368, 369, 222, 170, 171, 370, 116, 117, 230, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 29, 30, 31, 32, 33, 34, 35, 36, 46, 47, 48, 49, 50, 51, 52, 53, 56, 57, 58, 59, 60, 61, 62, 69, 70, 71, 77, 78, 79, 80, 83, 86, 87, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 102, 103, 104, 105, 106, 107, 108, 113, 114, 115, 122, 123, 124, 125, 126, 128, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 173, 175, 176, 179, 180, 181, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 215, 216, 217, 220, 221, 223, 224, 225, 226, 228, 229, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411}; +const u16 gSpeciesToHoennPokedexNum[] = // Assigns all species to the Hoenn Dex Index (Summary No. for Hoenn Dex) +{ + // SPECIES_NONE + HOENN_DEX_BULBASAUR, // SPECIES_BULBASAUR + HOENN_DEX_IVYSAUR, // SPECIES_IVYSAUR + HOENN_DEX_VENUSAUR, // SPECIES_VENUSAUR + HOENN_DEX_CHARMANDER, // SPECIES_CHARMANDER + HOENN_DEX_CHARMELEON, // SPECIES_CHARMELEON + HOENN_DEX_CHARIZARD, // SPECIES_CHARIZARD + HOENN_DEX_SQUIRTLE, // SPECIES_SQUIRTLE + HOENN_DEX_WARTORTLE, // SPECIES_WARTORTLE + HOENN_DEX_BLASTOISE, // SPECIES_BLASTOISE + HOENN_DEX_CATERPIE, // SPECIES_CATERPIE + HOENN_DEX_METAPOD, // SPECIES_METAPOD + HOENN_DEX_BUTTERFREE, // SPECIES_BUTTERFREE + HOENN_DEX_WEEDLE, // SPECIES_WEEDLE + HOENN_DEX_KAKUNA, // SPECIES_KAKUNA + HOENN_DEX_BEEDRILL, // SPECIES_BEEDRILL + HOENN_DEX_PIDGEY, // SPECIES_PIDGEY + HOENN_DEX_PIDGEOTTO, // SPECIES_PIDGEOTTO + HOENN_DEX_PIDGEOT, // SPECIES_PIDGEOT + HOENN_DEX_RATTATA, // SPECIES_RATTATA + HOENN_DEX_RATICATE, // SPECIES_RATICATE + HOENN_DEX_SPEAROW, // SPECIES_SPEAROW + HOENN_DEX_FEAROW, // SPECIES_FEAROW + HOENN_DEX_EKANS, // SPECIES_EKANS + HOENN_DEX_ARBOK, // SPECIES_ARBOK + HOENN_DEX_PIKACHU, // SPECIES_PIKACHU + HOENN_DEX_RAICHU, // SPECIES_RAICHU + HOENN_DEX_SANDSHREW, // SPECIES_SANDSHREW + HOENN_DEX_SANDSLASH, // SPECIES_SANDSLASH + HOENN_DEX_NIDORAN_F, // SPECIES_NIDORAN_F + HOENN_DEX_NIDORINA, // SPECIES_NIDORINA + HOENN_DEX_NIDOQUEEN, // SPECIES_NIDOQUEEN + HOENN_DEX_NIDORAN_M, // SPECIES_NIDORAN_M + HOENN_DEX_NIDORINO, // SPECIES_NIDORINO + HOENN_DEX_NIDOKING, // SPECIES_NIDOKING + HOENN_DEX_CLEFAIRY, // SPECIES_CLEFAIRY + HOENN_DEX_CLEFABLE, // SPECIES_CLEFABLE + HOENN_DEX_VULPIX, // SPECIES_VULPIX + HOENN_DEX_NINETALES, // SPECIES_NINETALES + HOENN_DEX_JIGGLYPUFF, // SPECIES_JIGGLYPUFF + HOENN_DEX_WIGGLYTUFF, // SPECIES_WIGGLYTUFF + HOENN_DEX_ZUBAT, // SPECIES_ZUBAT + HOENN_DEX_GOLBAT, // SPECIES_GOLBAT + HOENN_DEX_ODDISH, // SPECIES_ODDISH + HOENN_DEX_GLOOM, // SPECIES_GLOOM + HOENN_DEX_VILEPLUME, // SPECIES_VILEPLUME + HOENN_DEX_PARAS, // SPECIES_PARAS + HOENN_DEX_PARASECT, // SPECIES_PARASECT + HOENN_DEX_VENONAT, // SPECIES_VENONAT + HOENN_DEX_VENOMOTH, // SPECIES_VENOMOTH + HOENN_DEX_DIGLETT, // SPECIES_DIGLETT + HOENN_DEX_DUGTRIO, // SPECIES_DUGTRIO + HOENN_DEX_MEOWTH, // SPECIES_MEOWTH + HOENN_DEX_PERSIAN, // SPECIES_PERSIAN + HOENN_DEX_PSYDUCK, // SPECIES_PSYDUCK + HOENN_DEX_GOLDUCK, // SPECIES_GOLDUCK + HOENN_DEX_MANKEY, // SPECIES_MANKEY + HOENN_DEX_PRIMEAPE, // SPECIES_PRIMEAPE + HOENN_DEX_GROWLITHE, // SPECIES_GROWLITHE + HOENN_DEX_ARCANINE, // SPECIES_ARCANINE + HOENN_DEX_POLIWAG, // SPECIES_POLIWAG + HOENN_DEX_POLIWHIRL, // SPECIES_POLIWHIRL + HOENN_DEX_POLIWRATH, // SPECIES_POLIWRATH + HOENN_DEX_ABRA, // SPECIES_ABRA + HOENN_DEX_KADABRA, // SPECIES_KADABRA + HOENN_DEX_ALAKAZAM, // SPECIES_ALAKAZAM + HOENN_DEX_MACHOP, // SPECIES_MACHOP + HOENN_DEX_MACHOKE, // SPECIES_MACHOKE + HOENN_DEX_MACHAMP, // SPECIES_MACHAMP + HOENN_DEX_BELLSPROUT, // SPECIES_BELLSPROUT + HOENN_DEX_WEEPINBELL, // SPECIES_WEEPINBELL + HOENN_DEX_VICTREEBEL, // SPECIES_VICTREEBEL + HOENN_DEX_TENTACOOL, // SPECIES_TENTACOOL + HOENN_DEX_TENTACRUEL, // SPECIES_TENTACRUEL + HOENN_DEX_GEODUDE, // SPECIES_GEODUDE + HOENN_DEX_GRAVELER, // SPECIES_GRAVELER + HOENN_DEX_GOLEM, // SPECIES_GOLEM + HOENN_DEX_PONYTA, // SPECIES_PONYTA + HOENN_DEX_RAPIDASH, // SPECIES_RAPIDASH + HOENN_DEX_SLOWPOKE, // SPECIES_SLOWPOKE + HOENN_DEX_SLOWBRO, // SPECIES_SLOWBRO + HOENN_DEX_MAGNEMITE, // SPECIES_MAGNEMITE + HOENN_DEX_MAGNETON, // SPECIES_MAGNETON + HOENN_DEX_FARFETCHD, // SPECIES_FARFETCHD + HOENN_DEX_DODUO, // SPECIES_DODUO + HOENN_DEX_DODRIO, // SPECIES_DODRIO + HOENN_DEX_SEEL, // SPECIES_SEEL + HOENN_DEX_DEWGONG, // SPECIES_DEWGONG + HOENN_DEX_GRIMER, // SPECIES_GRIMER + HOENN_DEX_MUK, // SPECIES_MUK + HOENN_DEX_SHELLDER, // SPECIES_SHELLDER + HOENN_DEX_CLOYSTER, // SPECIES_CLOYSTER + HOENN_DEX_GASTLY, // SPECIES_GASTLY + HOENN_DEX_HAUNTER, // SPECIES_HAUNTER + HOENN_DEX_GENGAR, // SPECIES_GENGAR + HOENN_DEX_ONIX, // SPECIES_ONIX + HOENN_DEX_DROWZEE, // SPECIES_DROWZEE + HOENN_DEX_HYPNO, // SPECIES_HYPNO + HOENN_DEX_KRABBY, // SPECIES_KRABBY + HOENN_DEX_KINGLER, // SPECIES_KINGLER + HOENN_DEX_VOLTORB, // SPECIES_VOLTORB + HOENN_DEX_ELECTRODE, // SPECIES_ELECTRODE + HOENN_DEX_EXEGGCUTE, // SPECIES_EXEGGCUTE + HOENN_DEX_EXEGGUTOR, // SPECIES_EXEGGUTOR + HOENN_DEX_CUBONE, // SPECIES_CUBONE + HOENN_DEX_MAROWAK, // SPECIES_MAROWAK + HOENN_DEX_HITMONLEE, // SPECIES_HITMONLEE + HOENN_DEX_HITMONCHAN, // SPECIES_HITMONCHAN + HOENN_DEX_LICKITUNG, // SPECIES_LICKITUNG + HOENN_DEX_KOFFING, // SPECIES_KOFFING + HOENN_DEX_WEEZING, // SPECIES_WEEZING + HOENN_DEX_RHYHORN, // SPECIES_RHYHORN + HOENN_DEX_RHYDON, // SPECIES_RHYDON + HOENN_DEX_CHANSEY, // SPECIES_CHANSEY + HOENN_DEX_TANGELA, // SPECIES_TANGELA + HOENN_DEX_KANGASKHAN, // SPECIES_KANGASKHAN + HOENN_DEX_HORSEA, // SPECIES_HORSEA + HOENN_DEX_SEADRA, // SPECIES_SEADRA + HOENN_DEX_GOLDEEN, // SPECIES_GOLDEEN + HOENN_DEX_SEAKING, // SPECIES_SEAKING + HOENN_DEX_STARYU, // SPECIES_STARYU + HOENN_DEX_STARMIE, // SPECIES_STARMIE + HOENN_DEX_MR_MIME, // SPECIES_MR_MIME + HOENN_DEX_SCYTHER, // SPECIES_SCYTHER + HOENN_DEX_JYNX, // SPECIES_JYNX + HOENN_DEX_ELECTABUZZ, // SPECIES_ELECTABUZZ + HOENN_DEX_MAGMAR, // SPECIES_MAGMAR + HOENN_DEX_PINSIR, // SPECIES_PINSIR + HOENN_DEX_TAUROS, // SPECIES_TAUROS + HOENN_DEX_MAGIKARP, // SPECIES_MAGIKARP + HOENN_DEX_GYARADOS, // SPECIES_GYARADOS + HOENN_DEX_LAPRAS, // SPECIES_LAPRAS + HOENN_DEX_DITTO, // SPECIES_DITTO + HOENN_DEX_EEVEE, // SPECIES_EEVEE + HOENN_DEX_VAPOREON, // SPECIES_VAPOREON + HOENN_DEX_JOLTEON, // SPECIES_JOLTEON + HOENN_DEX_FLAREON, // SPECIES_FLAREON + HOENN_DEX_PORYGON, // SPECIES_PORYGON + HOENN_DEX_OMANYTE, // SPECIES_OMANYTE + HOENN_DEX_OMASTAR, // SPECIES_OMASTAR + HOENN_DEX_KABUTO, // SPECIES_KABUTO + HOENN_DEX_KABUTOPS, // SPECIES_KABUTOPS + HOENN_DEX_AERODACTYL, // SPECIES_AERODACTYL + HOENN_DEX_SNORLAX, // SPECIES_SNORLAX + HOENN_DEX_ARTICUNO, // SPECIES_ARTICUNO + HOENN_DEX_ZAPDOS, // SPECIES_ZAPDOS + HOENN_DEX_MOLTRES, // SPECIES_MOLTRES + HOENN_DEX_DRATINI, // SPECIES_DRATINI + HOENN_DEX_DRAGONAIR, // SPECIES_DRAGONAIR + HOENN_DEX_DRAGONITE, // SPECIES_DRAGONITE + HOENN_DEX_MEWTWO, // SPECIES_MEWTWO + HOENN_DEX_MEW, // SPECIES_MEW + HOENN_DEX_CHIKORITA, // SPECIES_CHIKORITA + HOENN_DEX_BAYLEEF, // SPECIES_BAYLEEF + HOENN_DEX_MEGANIUM, // SPECIES_MEGANIUM + HOENN_DEX_CYNDAQUIL, // SPECIES_CYNDAQUIL + HOENN_DEX_QUILAVA, // SPECIES_QUILAVA + HOENN_DEX_TYPHLOSION, // SPECIES_TYPHLOSION + HOENN_DEX_TOTODILE, // SPECIES_TOTODILE + HOENN_DEX_CROCONAW, // SPECIES_CROCONAW + HOENN_DEX_FERALIGATR, // SPECIES_FERALIGATR + HOENN_DEX_SENTRET, // SPECIES_SENTRET + HOENN_DEX_FURRET, // SPECIES_FURRET + HOENN_DEX_HOOTHOOT, // SPECIES_HOOTHOOT + HOENN_DEX_NOCTOWL, // SPECIES_NOCTOWL + HOENN_DEX_LEDYBA, // SPECIES_LEDYBA + HOENN_DEX_LEDIAN, // SPECIES_LEDIAN + HOENN_DEX_SPINARAK, // SPECIES_SPINARAK + HOENN_DEX_ARIADOS, // SPECIES_ARIADOS + HOENN_DEX_CROBAT, // SPECIES_CROBAT + HOENN_DEX_CHINCHOU, // SPECIES_CHINCHOU + HOENN_DEX_LANTURN, // SPECIES_LANTURN + HOENN_DEX_PICHU, // SPECIES_PICHU + HOENN_DEX_CLEFFA, // SPECIES_CLEFFA + HOENN_DEX_IGGLYBUFF, // SPECIES_IGGLYBUFF + HOENN_DEX_TOGEPI, // SPECIES_TOGEPI + HOENN_DEX_TOGETIC, // SPECIES_TOGETIC + HOENN_DEX_NATU, // SPECIES_NATU + HOENN_DEX_XATU, // SPECIES_XATU + HOENN_DEX_MAREEP, // SPECIES_MAREEP + HOENN_DEX_FLAAFFY, // SPECIES_FLAAFFY + HOENN_DEX_AMPHAROS, // SPECIES_AMPHAROS + HOENN_DEX_BELLOSSOM, // SPECIES_BELLOSSOM + HOENN_DEX_MARILL, // SPECIES_MARILL + HOENN_DEX_AZUMARILL, // SPECIES_AZUMARILL + HOENN_DEX_SUDOWOODO, // SPECIES_SUDOWOODO + HOENN_DEX_POLITOED, // SPECIES_POLITOED + HOENN_DEX_HOPPIP, // SPECIES_HOPPIP + HOENN_DEX_SKIPLOOM, // SPECIES_SKIPLOOM + HOENN_DEX_JUMPLUFF, // SPECIES_JUMPLUFF + HOENN_DEX_AIPOM, // SPECIES_AIPOM + HOENN_DEX_SUNKERN, // SPECIES_SUNKERN + HOENN_DEX_SUNFLORA, // SPECIES_SUNFLORA + HOENN_DEX_YANMA, // SPECIES_YANMA + HOENN_DEX_WOOPER, // SPECIES_WOOPER + HOENN_DEX_QUAGSIRE, // SPECIES_QUAGSIRE + HOENN_DEX_ESPEON, // SPECIES_ESPEON + HOENN_DEX_UMBREON, // SPECIES_UMBREON + HOENN_DEX_MURKROW, // SPECIES_MURKROW + HOENN_DEX_SLOWKING, // SPECIES_SLOWKING + HOENN_DEX_MISDREAVUS, // SPECIES_MISDREAVUS + HOENN_DEX_UNOWN, // SPECIES_UNOWN + HOENN_DEX_WOBBUFFET, // SPECIES_WOBBUFFET + HOENN_DEX_GIRAFARIG, // SPECIES_GIRAFARIG + HOENN_DEX_PINECO, // SPECIES_PINECO + HOENN_DEX_FORRETRESS, // SPECIES_FORRETRESS + HOENN_DEX_DUNSPARCE, // SPECIES_DUNSPARCE + HOENN_DEX_GLIGAR, // SPECIES_GLIGAR + HOENN_DEX_STEELIX, // SPECIES_STEELIX + HOENN_DEX_SNUBBULL, // SPECIES_SNUBBULL + HOENN_DEX_GRANBULL, // SPECIES_GRANBULL + HOENN_DEX_QWILFISH, // SPECIES_QWILFISH + HOENN_DEX_SCIZOR, // SPECIES_SCIZOR + HOENN_DEX_SHUCKLE, // SPECIES_SHUCKLE + HOENN_DEX_HERACROSS, // SPECIES_HERACROSS + HOENN_DEX_SNEASEL, // SPECIES_SNEASEL + HOENN_DEX_TEDDIURSA, // SPECIES_TEDDIURSA + HOENN_DEX_URSARING, // SPECIES_URSARING + HOENN_DEX_SLUGMA, // SPECIES_SLUGMA + HOENN_DEX_MAGCARGO, // SPECIES_MAGCARGO + HOENN_DEX_SWINUB, // SPECIES_SWINUB + HOENN_DEX_PILOSWINE, // SPECIES_PILOSWINE + HOENN_DEX_CORSOLA, // SPECIES_CORSOLA + HOENN_DEX_REMORAID, // SPECIES_REMORAID + HOENN_DEX_OCTILLERY, // SPECIES_OCTILLERY + HOENN_DEX_DELIBIRD, // SPECIES_DELIBIRD + HOENN_DEX_MANTINE, // SPECIES_MANTINE + HOENN_DEX_SKARMORY, // SPECIES_SKARMORY + HOENN_DEX_HOUNDOUR, // SPECIES_HOUNDOUR + HOENN_DEX_HOUNDOOM, // SPECIES_HOUNDOOM + HOENN_DEX_KINGDRA, // SPECIES_KINGDRA + HOENN_DEX_PHANPY, // SPECIES_PHANPY + HOENN_DEX_DONPHAN, // SPECIES_DONPHAN + HOENN_DEX_PORYGON2, // SPECIES_PORYGON2 + HOENN_DEX_STANTLER, // SPECIES_STANTLER + HOENN_DEX_SMEARGLE, // SPECIES_SMEARGLE + HOENN_DEX_TYROGUE, // SPECIES_TYROGUE + HOENN_DEX_HITMONTOP, // SPECIES_HITMONTOP + HOENN_DEX_SMOOCHUM, // SPECIES_SMOOCHUM + HOENN_DEX_ELEKID, // SPECIES_ELEKID + HOENN_DEX_MAGBY, // SPECIES_MAGBY + HOENN_DEX_MILTANK, // SPECIES_MILTANK + HOENN_DEX_BLISSEY, // SPECIES_BLISSEY + HOENN_DEX_RAIKOU, // SPECIES_RAIKOU + HOENN_DEX_ENTEI, // SPECIES_ENTEI + HOENN_DEX_SUICUNE, // SPECIES_SUICUNE + HOENN_DEX_LARVITAR, // SPECIES_LARVITAR + HOENN_DEX_PUPITAR, // SPECIES_PUPITAR + HOENN_DEX_TYRANITAR, // SPECIES_TYRANITAR + HOENN_DEX_LUGIA, // SPECIES_LUGIA + HOENN_DEX_HO_OH, // SPECIES_HO-OH + HOENN_DEX_CELEBI, // SPECIES_CELEBI + HOENN_DEX_OLD_UNOWN_B, // SPECIES_OLD_UNOWN_B + HOENN_DEX_OLD_UNOWN_C, // SPECIES_OLD_UNOWN_C + HOENN_DEX_OLD_UNOWN_D, // SPECIES_OLD_UNOWN_D + HOENN_DEX_OLD_UNOWN_E, // SPECIES_OLD_UNOWN_E + HOENN_DEX_OLD_UNOWN_F, // SPECIES_OLD_UNOWN_F + HOENN_DEX_OLD_UNOWN_G, // SPECIES_OLD_UNOWN_G + HOENN_DEX_OLD_UNOWN_H, // SPECIES_OLD_UNOWN_H + HOENN_DEX_OLD_UNOWN_I, // SPECIES_OLD_UNOWN_I + HOENN_DEX_OLD_UNOWN_J, // SPECIES_OLD_UNOWN_J + HOENN_DEX_OLD_UNOWN_K, // SPECIES_OLD_UNOWN_K + HOENN_DEX_OLD_UNOWN_L, // SPECIES_OLD_UNOWN_L + HOENN_DEX_OLD_UNOWN_M, // SPECIES_OLD_UNOWN_M + HOENN_DEX_OLD_UNOWN_N, // SPECIES_OLD_UNOWN_N + HOENN_DEX_OLD_UNOWN_O, // SPECIES_OLD_UNOWN_O + HOENN_DEX_OLD_UNOWN_P, // SPECIES_OLD_UNOWN_P + HOENN_DEX_OLD_UNOWN_Q, // SPECIES_OLD_UNOWN_Q + HOENN_DEX_OLD_UNOWN_R, // SPECIES_OLD_UNOWN_R + HOENN_DEX_OLD_UNOWN_S, // SPECIES_OLD_UNOWN_S + HOENN_DEX_OLD_UNOWN_T, // SPECIES_OLD_UNOWN_T + HOENN_DEX_OLD_UNOWN_U, // SPECIES_OLD_UNOWN_U + HOENN_DEX_OLD_UNOWN_V, // SPECIES_OLD_UNOWN_V + HOENN_DEX_OLD_UNOWN_W, // SPECIES_OLD_UNOWN_W + HOENN_DEX_OLD_UNOWN_X, // SPECIES_OLD_UNOWN_X + HOENN_DEX_OLD_UNOWN_Y, // SPECIES_OLD_UNOWN_Y + HOENN_DEX_OLD_UNOWN_Z, // SPECIES_OLD_UNOWN_Z + HOENN_DEX_TREECKO, // SPECIES_TREECKO + HOENN_DEX_GROVYLE, // SPECIES_GROVYLE + HOENN_DEX_SCEPTILE, // SPECIES_SCEPTILE + HOENN_DEX_TORCHIC, // SPECIES_TORCHIC + HOENN_DEX_COMBUSKEN, // SPECIES_COMBUSKEN + HOENN_DEX_BLAZIKEN, // SPECIES_BLAZIKEN + HOENN_DEX_MUDKIP, // SPECIES_MUDKIP + HOENN_DEX_MARSHTOMP, // SPECIES_MARSHTOMP + HOENN_DEX_SWAMPERT, // SPECIES_SWAMPERT + HOENN_DEX_POOCHYENA, // SPECIES_POOCHYENA + HOENN_DEX_MIGHTYENA, // SPECIES_MIGHTYENA + HOENN_DEX_ZIGZAGOON, // SPECIES_ZIGZAGOON + HOENN_DEX_LINOONE, // SPECIES_LINOONE + HOENN_DEX_WURMPLE, // SPECIES_WURMPLE + HOENN_DEX_SILCOON, // SPECIES_SILCOON + HOENN_DEX_BEAUTIFLY, // SPECIES_BEAUTIFLY + HOENN_DEX_CASCOON, // SPECIES_CASCOON + HOENN_DEX_DUSTOX, // SPECIES_DUSTOX + HOENN_DEX_LOTAD, // SPECIES_LOTAD + HOENN_DEX_LOMBRE, // SPECIES_LOMBRE + HOENN_DEX_LUDICOLO, // SPECIES_LUDICOLO + HOENN_DEX_SEEDOT, // SPECIES_SEEDOT + HOENN_DEX_NUZLEAF, // SPECIES_NUZLEAF + HOENN_DEX_SHIFTRY, // SPECIES_SHIFTRY + HOENN_DEX_NINCADA, // SPECIES_NINCADA + HOENN_DEX_NINJASK, // SPECIES_NINJASK + HOENN_DEX_SHEDINJA, // SPECIES_SHEDINJA + HOENN_DEX_TAILLOW, // SPECIES_TAILLOW + HOENN_DEX_SWELLOW, // SPECIES_SWELLOW + HOENN_DEX_SHROOMISH, // SPECIES_SHROOMISH + HOENN_DEX_BRELOOM, // SPECIES_BRELOOM + HOENN_DEX_SPINDA, // SPECIES_SPINDA + HOENN_DEX_WINGULL, // SPECIES_WINGULL + HOENN_DEX_PELIPPER, // SPECIES_PELIPPER + HOENN_DEX_SURSKIT, // SPECIES_SURSKIT + HOENN_DEX_MASQUERAIN, // SPECIES_MASQUERAIN + HOENN_DEX_WAILMER, // SPECIES_WAILMER + HOENN_DEX_WAILORD, // SPECIES_WAILORD + HOENN_DEX_SKITTY, // SPECIES_SKITTY + HOENN_DEX_DELCATTY, // SPECIES_DELCATTY + HOENN_DEX_KECLEON, // SPECIES_KECLEON + HOENN_DEX_BALTOY, // SPECIES_BALTOY + HOENN_DEX_CLAYDOL, // SPECIES_CLAYDOL + HOENN_DEX_NOSEPASS, // SPECIES_NOSEPASS + HOENN_DEX_TORKOAL, // SPECIES_TORKOAL + HOENN_DEX_SABLEYE, // SPECIES_SABLEYE + HOENN_DEX_BARBOACH, // SPECIES_BARBOACH + HOENN_DEX_WHISCASH, // SPECIES_WHISCASH + HOENN_DEX_LUVDISC, // SPECIES_LUVDISC + HOENN_DEX_CORPHISH, // SPECIES_CORPHISH + HOENN_DEX_CRAWDAUNT, // SPECIES_CRAWDAUNT + HOENN_DEX_FEEBAS, // SPECIES_FEEBAS + HOENN_DEX_MILOTIC, // SPECIES_MILOTIC + HOENN_DEX_CARVANHA, // SPECIES_CARVANHA + HOENN_DEX_SHARPEDO, // SPECIES_SHARPEDO + HOENN_DEX_TRAPINCH, // SPECIES_TRAPINCH + HOENN_DEX_VIBRAVA, // SPECIES_VIBRAVA + HOENN_DEX_FLYGON, // SPECIES_FLYGON + HOENN_DEX_MAKUHITA, // SPECIES_MAKUHITA + HOENN_DEX_HARIYAMA, // SPECIES_HARIYAMA + HOENN_DEX_ELECTRIKE, // SPECIES_ELECTRIKE + HOENN_DEX_MANECTRIC, // SPECIES_MANECTRIC + HOENN_DEX_NUMEL, // SPECIES_NUMEL + HOENN_DEX_CAMERUPT, // SPECIES_CAMERUPT + HOENN_DEX_SPHEAL, // SPECIES_SPHEAL + HOENN_DEX_SEALEO, // SPECIES_SEALEO + HOENN_DEX_WALREIN, // SPECIES_WALREIN + HOENN_DEX_CACNEA, // SPECIES_CACNEA + HOENN_DEX_CACTURNE, // SPECIES_CACTURNE + HOENN_DEX_SNORUNT, // SPECIES_SNORUNT + HOENN_DEX_GLALIE, // SPECIES_GLALIE + HOENN_DEX_LUNATONE, // SPECIES_LUNATONE + HOENN_DEX_SOLROCK, // SPECIES_SOLROCK + HOENN_DEX_AZURILL, // SPECIES_AZURILL + HOENN_DEX_SPOINK, // SPECIES_SPOINK + HOENN_DEX_GRUMPIG, // SPECIES_GRUMPIG + HOENN_DEX_PLUSLE, // SPECIES_PLUSLE + HOENN_DEX_MINUN, // SPECIES_MINUN + HOENN_DEX_MAWILE, // SPECIES_MAWILE + HOENN_DEX_MEDITITE, // SPECIES_MEDITITE + HOENN_DEX_MEDICHAM, // SPECIES_MEDICHAM + HOENN_DEX_SWABLU, // SPECIES_SWABLU + HOENN_DEX_ALTARIA, // SPECIES_ALTARIA + HOENN_DEX_WYNAUT, // SPECIES_WYNAUT + HOENN_DEX_DUSKULL, // SPECIES_DUSKULL + HOENN_DEX_DUSCLOPS, // SPECIES_DUSCLOPS + HOENN_DEX_ROSELIA, // SPECIES_ROSELIA + HOENN_DEX_SLAKOTH, // SPECIES_SLAKOTH + HOENN_DEX_VIGOROTH, // SPECIES_VIGOROTH + HOENN_DEX_SLAKING, // SPECIES_SLAKING + HOENN_DEX_GULPIN, // SPECIES_GULPIN + HOENN_DEX_SWALOT, // SPECIES_SWALOT + HOENN_DEX_TROPIUS, // SPECIES_TROPIUS + HOENN_DEX_WHISMUR, // SPECIES_WHISMUR + HOENN_DEX_LOUDRED, // SPECIES_LOUDRED + HOENN_DEX_EXPLOUD, // SPECIES_EXPLOUD + HOENN_DEX_CLAMPERL, // SPECIES_CLAMPERL + HOENN_DEX_HUNTAIL, // SPECIES_HUNTAIL + HOENN_DEX_GOREBYSS, // SPECIES_GOREBYSS + HOENN_DEX_ABSOL, // SPECIES_ABSOL + HOENN_DEX_SHUPPET, // SPECIES_SHUPPET + HOENN_DEX_BANETTE, // SPECIES_BANETTE + HOENN_DEX_SEVIPER, // SPECIES_SEVIPER + HOENN_DEX_ZANGOOSE, // SPECIES_ZANGOOSE + HOENN_DEX_RELICANTH, // SPECIES_RELICANTH + HOENN_DEX_ARON, // SPECIES_ARON + HOENN_DEX_LAIRON, // SPECIES_LAIRON + HOENN_DEX_AGGRON, // SPECIES_AGGRON + HOENN_DEX_CASTFORM, // SPECIES_CASTFORM + HOENN_DEX_VOLBEAT, // SPECIES_VOLBEAT + HOENN_DEX_ILLUMISE, // SPECIES_ILLUMISE + HOENN_DEX_LILEEP, // SPECIES_LILEEP + HOENN_DEX_CRADILY, // SPECIES_CRADILY + HOENN_DEX_ANORITH, // SPECIES_ANORITH + HOENN_DEX_ARMALDO, // SPECIES_ARMALDO + HOENN_DEX_RALTS, // SPECIES_RALTS + HOENN_DEX_KIRLIA, // SPECIES_KIRLIA + HOENN_DEX_GARDEVOIR, // SPECIES_GARDEVOIR + HOENN_DEX_BAGON, // SPECIES_BAGON + HOENN_DEX_SHELGON, // SPECIES_SHELGON + HOENN_DEX_SALAMENCE, // SPECIES_SALAMENCE + HOENN_DEX_BELDUM, // SPECIES_BELDUM + HOENN_DEX_METANG, // SPECIES_METANG + HOENN_DEX_METAGROSS, // SPECIES_METAGROSS + HOENN_DEX_REGIROCK, // SPECIES_REGIROCK + HOENN_DEX_REGICE, // SPECIES_REGICE + HOENN_DEX_REGISTEEL, // SPECIES_REGISTEEL + HOENN_DEX_KYOGRE, // SPECIES_KYOGRE + HOENN_DEX_GROUDON, // SPECIES_GROUDON + HOENN_DEX_RAYQUAZA, // SPECIES_RAYQUAZA + HOENN_DEX_LATIAS, // SPECIES_LATIAS + HOENN_DEX_LATIOS, // SPECIES_LATIOS + HOENN_DEX_JIRACHI, // SPECIES_JIRACHI + HOENN_DEX_DEOXYS, // SPECIES_DEOXYS + HOENN_DEX_CHIMECHO // SPECIES_CHIMECHO +}; + +const u16 gSpeciesToNationalPokedexNum[] = // Assigns all species to the National Dex Index (Summary No. for National Dex) +{ + // SPECIES_NONE + NATIONAL_DEX_BULBASAUR, // SPECIES_BULBASAUR + NATIONAL_DEX_IVYSAUR, // SPECIES_IVYSAUR + NATIONAL_DEX_VENUSAUR, // SPECIES_VENUSAUR + NATIONAL_DEX_CHARMANDER, // SPECIES_CHARMANDER + NATIONAL_DEX_CHARMELEON, // SPECIES_CHARMELEON + NATIONAL_DEX_CHARIZARD, // SPECIES_CHARIZARD + NATIONAL_DEX_SQUIRTLE, // SPECIES_SQUIRTLE + NATIONAL_DEX_WARTORTLE, // SPECIES_WARTORTLE + NATIONAL_DEX_BLASTOISE, // SPECIES_BLASTOISE + NATIONAL_DEX_CATERPIE, // SPECIES_CATERPIE + NATIONAL_DEX_METAPOD, // SPECIES_METAPOD + NATIONAL_DEX_BUTTERFREE, // SPECIES_BUTTERFREE + NATIONAL_DEX_WEEDLE, // SPECIES_WEEDLE + NATIONAL_DEX_KAKUNA, // SPECIES_KAKUNA + NATIONAL_DEX_BEEDRILL, // SPECIES_BEEDRILL + NATIONAL_DEX_PIDGEY, // SPECIES_PIDGEY + NATIONAL_DEX_PIDGEOTTO, // SPECIES_PIDGEOTTO + NATIONAL_DEX_PIDGEOT, // SPECIES_PIDGEOT + NATIONAL_DEX_RATTATA, // SPECIES_RATTATA + NATIONAL_DEX_RATICATE, // SPECIES_RATICATE + NATIONAL_DEX_SPEAROW, // SPECIES_SPEAROW + NATIONAL_DEX_FEAROW, // SPECIES_FEAROW + NATIONAL_DEX_EKANS, // SPECIES_EKANS + NATIONAL_DEX_ARBOK, // SPECIES_ARBOK + NATIONAL_DEX_PIKACHU, // SPECIES_PIKACHU + NATIONAL_DEX_RAICHU, // SPECIES_RAICHU + NATIONAL_DEX_SANDSHREW, // SPECIES_SANDSHREW + NATIONAL_DEX_SANDSLASH, // SPECIES_SANDSLASH + NATIONAL_DEX_NIDORAN_F, // SPECIES_NIDORAN_F + NATIONAL_DEX_NIDORINA, // SPECIES_NIDORINA + NATIONAL_DEX_NIDOQUEEN, // SPECIES_NIDOQUEEN + NATIONAL_DEX_NIDORAN_M, // SPECIES_NIDORAN_M + NATIONAL_DEX_NIDORINO, // SPECIES_NIDORINO + NATIONAL_DEX_NIDOKING, // SPECIES_NIDOKING + NATIONAL_DEX_CLEFAIRY, // SPECIES_CLEFAIRY + NATIONAL_DEX_CLEFABLE, // SPECIES_CLEFABLE + NATIONAL_DEX_VULPIX, // SPECIES_VULPIX + NATIONAL_DEX_NINETALES, // SPECIES_NINETALES + NATIONAL_DEX_JIGGLYPUFF, // SPECIES_JIGGLYPUFF + NATIONAL_DEX_WIGGLYTUFF, // SPECIES_WIGGLYTUFF + NATIONAL_DEX_ZUBAT, // SPECIES_ZUBAT + NATIONAL_DEX_GOLBAT, // SPECIES_GOLBAT + NATIONAL_DEX_ODDISH, // SPECIES_ODDISH + NATIONAL_DEX_GLOOM, // SPECIES_GLOOM + NATIONAL_DEX_VILEPLUME, // SPECIES_VILEPLUME + NATIONAL_DEX_PARAS, // SPECIES_PARAS + NATIONAL_DEX_PARASECT, // SPECIES_PARASECT + NATIONAL_DEX_VENONAT, // SPECIES_VENONAT + NATIONAL_DEX_VENOMOTH, // SPECIES_VENOMOTH + NATIONAL_DEX_DIGLETT, // SPECIES_DIGLETT + NATIONAL_DEX_DUGTRIO, // SPECIES_DUGTRIO + NATIONAL_DEX_MEOWTH, // SPECIES_MEOWTH + NATIONAL_DEX_PERSIAN, // SPECIES_PERSIAN + NATIONAL_DEX_PSYDUCK, // SPECIES_PSYDUCK + NATIONAL_DEX_GOLDUCK, // SPECIES_GOLDUCK + NATIONAL_DEX_MANKEY, // SPECIES_MANKEY + NATIONAL_DEX_PRIMEAPE, // SPECIES_PRIMEAPE + NATIONAL_DEX_GROWLITHE, // SPECIES_GROWLITHE + NATIONAL_DEX_ARCANINE, // SPECIES_ARCANINE + NATIONAL_DEX_POLIWAG, // SPECIES_POLIWAG + NATIONAL_DEX_POLIWHIRL, // SPECIES_POLIWHIRL + NATIONAL_DEX_POLIWRATH, // SPECIES_POLIWRATH + NATIONAL_DEX_ABRA, // SPECIES_ABRA + NATIONAL_DEX_KADABRA, // SPECIES_KADABRA + NATIONAL_DEX_ALAKAZAM, // SPECIES_ALAKAZAM + NATIONAL_DEX_MACHOP, // SPECIES_MACHOP + NATIONAL_DEX_MACHOKE, // SPECIES_MACHOKE + NATIONAL_DEX_MACHAMP, // SPECIES_MACHAMP + NATIONAL_DEX_BELLSPROUT, // SPECIES_BELLSPROUT + NATIONAL_DEX_WEEPINBELL, // SPECIES_WEEPINBELL + NATIONAL_DEX_VICTREEBEL, // SPECIES_VICTREEBEL + NATIONAL_DEX_TENTACOOL, // SPECIES_TENTACOOL + NATIONAL_DEX_TENTACRUEL, // SPECIES_TENTACRUEL + NATIONAL_DEX_GEODUDE, // SPECIES_GEODUDE + NATIONAL_DEX_GRAVELER, // SPECIES_GRAVELER + NATIONAL_DEX_GOLEM, // SPECIES_GOLEM + NATIONAL_DEX_PONYTA, // SPECIES_PONYTA + NATIONAL_DEX_RAPIDASH, // SPECIES_RAPIDASH + NATIONAL_DEX_SLOWPOKE, // SPECIES_SLOWPOKE + NATIONAL_DEX_SLOWBRO, // SPECIES_SLOWBRO + NATIONAL_DEX_MAGNEMITE, // SPECIES_MAGNEMITE + NATIONAL_DEX_MAGNETON, // SPECIES_MAGNETON + NATIONAL_DEX_FARFETCHD, // SPECIES_FARFETCHD + NATIONAL_DEX_DODUO, // SPECIES_DODUO + NATIONAL_DEX_DODRIO, // SPECIES_DODRIO + NATIONAL_DEX_SEEL, // SPECIES_SEEL + NATIONAL_DEX_DEWGONG, // SPECIES_DEWGONG + NATIONAL_DEX_GRIMER, // SPECIES_GRIMER + NATIONAL_DEX_MUK, // SPECIES_MUK + NATIONAL_DEX_SHELLDER, // SPECIES_SHELLDER + NATIONAL_DEX_CLOYSTER, // SPECIES_CLOYSTER + NATIONAL_DEX_GASTLY, // SPECIES_GASTLY + NATIONAL_DEX_HAUNTER, // SPECIES_HAUNTER + NATIONAL_DEX_GENGAR, // SPECIES_GENGAR + NATIONAL_DEX_ONIX, // SPECIES_ONIX + NATIONAL_DEX_DROWZEE, // SPECIES_DROWZEE + NATIONAL_DEX_HYPNO, // SPECIES_HYPNO + NATIONAL_DEX_KRABBY, // SPECIES_KRABBY + NATIONAL_DEX_KINGLER, // SPECIES_KINGLER + NATIONAL_DEX_VOLTORB, // SPECIES_VOLTORB + NATIONAL_DEX_ELECTRODE, // SPECIES_ELECTRODE + NATIONAL_DEX_EXEGGCUTE, // SPECIES_EXEGGCUTE + NATIONAL_DEX_EXEGGUTOR, // SPECIES_EXEGGUTOR + NATIONAL_DEX_CUBONE, // SPECIES_CUBONE + NATIONAL_DEX_MAROWAK, // SPECIES_MAROWAK + NATIONAL_DEX_HITMONLEE, // SPECIES_HITMONLEE + NATIONAL_DEX_HITMONCHAN, // SPECIES_HITMONCHAN + NATIONAL_DEX_LICKITUNG, // SPECIES_LICKITUNG + NATIONAL_DEX_KOFFING, // SPECIES_KOFFING + NATIONAL_DEX_WEEZING, // SPECIES_WEEZING + NATIONAL_DEX_RHYHORN, // SPECIES_RHYHORN + NATIONAL_DEX_RHYDON, // SPECIES_RHYDON + NATIONAL_DEX_CHANSEY, // SPECIES_CHANSEY + NATIONAL_DEX_TANGELA, // SPECIES_TANGELA + NATIONAL_DEX_KANGASKHAN, // SPECIES_KANGASKHAN + NATIONAL_DEX_HORSEA, // SPECIES_HORSEA + NATIONAL_DEX_SEADRA, // SPECIES_SEADRA + NATIONAL_DEX_GOLDEEN, // SPECIES_GOLDEEN + NATIONAL_DEX_SEAKING, // SPECIES_SEAKING + NATIONAL_DEX_STARYU, // SPECIES_STARYU + NATIONAL_DEX_STARMIE, // SPECIES_STARMIE + NATIONAL_DEX_MR_MIME, // SPECIES_MR_MIME + NATIONAL_DEX_SCYTHER, // SPECIES_SCYTHER + NATIONAL_DEX_JYNX, // SPECIES_JYNX + NATIONAL_DEX_ELECTABUZZ, // SPECIES_ELECTABUZZ + NATIONAL_DEX_MAGMAR, // SPECIES_MAGMAR + NATIONAL_DEX_PINSIR, // SPECIES_PINSIR + NATIONAL_DEX_TAUROS, // SPECIES_TAUROS + NATIONAL_DEX_MAGIKARP, // SPECIES_MAGIKARP + NATIONAL_DEX_GYARADOS, // SPECIES_GYARADOS + NATIONAL_DEX_LAPRAS, // SPECIES_LAPRAS + NATIONAL_DEX_DITTO, // SPECIES_DITTO + NATIONAL_DEX_EEVEE, // SPECIES_EEVEE + NATIONAL_DEX_VAPOREON, // SPECIES_VAPOREON + NATIONAL_DEX_JOLTEON, // SPECIES_JOLTEON + NATIONAL_DEX_FLAREON, // SPECIES_FLAREON + NATIONAL_DEX_PORYGON, // SPECIES_PORYGON + NATIONAL_DEX_OMANYTE, // SPECIES_OMANYTE + NATIONAL_DEX_OMASTAR, // SPECIES_OMASTAR + NATIONAL_DEX_KABUTO, // SPECIES_KABUTO + NATIONAL_DEX_KABUTOPS, // SPECIES_KABUTOPS + NATIONAL_DEX_AERODACTYL, // SPECIES_AERODACTYL + NATIONAL_DEX_SNORLAX, // SPECIES_SNORLAX + NATIONAL_DEX_ARTICUNO, // SPECIES_ARTICUNO + NATIONAL_DEX_ZAPDOS, // SPECIES_ZAPDOS + NATIONAL_DEX_MOLTRES, // SPECIES_MOLTRES + NATIONAL_DEX_DRATINI, // SPECIES_DRATINI + NATIONAL_DEX_DRAGONAIR, // SPECIES_DRAGONAIR + NATIONAL_DEX_DRAGONITE, // SPECIES_DRAGONITE + NATIONAL_DEX_MEWTWO, // SPECIES_MEWTWO + NATIONAL_DEX_MEW, // SPECIES_MEW + NATIONAL_DEX_CHIKORITA, // SPECIES_CHIKORITA + NATIONAL_DEX_BAYLEEF, // SPECIES_BAYLEEF + NATIONAL_DEX_MEGANIUM, // SPECIES_MEGANIUM + NATIONAL_DEX_CYNDAQUIL, // SPECIES_CYNDAQUIL + NATIONAL_DEX_QUILAVA, // SPECIES_QUILAVA + NATIONAL_DEX_TYPHLOSION, // SPECIES_TYPHLOSION + NATIONAL_DEX_TOTODILE, // SPECIES_TOTODILE + NATIONAL_DEX_CROCONAW, // SPECIES_CROCONAW + NATIONAL_DEX_FERALIGATR, // SPECIES_FERALIGATR + NATIONAL_DEX_SENTRET, // SPECIES_SENTRET + NATIONAL_DEX_FURRET, // SPECIES_FURRET + NATIONAL_DEX_HOOTHOOT, // SPECIES_HOOTHOOT + NATIONAL_DEX_NOCTOWL, // SPECIES_NOCTOWL + NATIONAL_DEX_LEDYBA, // SPECIES_LEDYBA + NATIONAL_DEX_LEDIAN, // SPECIES_LEDIAN + NATIONAL_DEX_SPINARAK, // SPECIES_SPINARAK + NATIONAL_DEX_ARIADOS, // SPECIES_ARIADOS + NATIONAL_DEX_CROBAT, // SPECIES_CROBAT + NATIONAL_DEX_CHINCHOU, // SPECIES_CHINCHOU + NATIONAL_DEX_LANTURN, // SPECIES_LANTURN + NATIONAL_DEX_PICHU, // SPECIES_PICHU + NATIONAL_DEX_CLEFFA, // SPECIES_CLEFFA + NATIONAL_DEX_IGGLYBUFF, // SPECIES_IGGLYBUFF + NATIONAL_DEX_TOGEPI, // SPECIES_TOGEPI + NATIONAL_DEX_TOGETIC, // SPECIES_TOGETIC + NATIONAL_DEX_NATU, // SPECIES_NATU + NATIONAL_DEX_XATU, // SPECIES_XATU + NATIONAL_DEX_MAREEP, // SPECIES_MAREEP + NATIONAL_DEX_FLAAFFY, // SPECIES_FLAAFFY + NATIONAL_DEX_AMPHAROS, // SPECIES_AMPHAROS + NATIONAL_DEX_BELLOSSOM, // SPECIES_BELLOSSOM + NATIONAL_DEX_MARILL, // SPECIES_MARILL + NATIONAL_DEX_AZUMARILL, // SPECIES_AZUMARILL + NATIONAL_DEX_SUDOWOODO, // SPECIES_SUDOWOODO + NATIONAL_DEX_POLITOED, // SPECIES_POLITOED + NATIONAL_DEX_HOPPIP, // SPECIES_HOPPIP + NATIONAL_DEX_SKIPLOOM, // SPECIES_SKIPLOOM + NATIONAL_DEX_JUMPLUFF, // SPECIES_JUMPLUFF + NATIONAL_DEX_AIPOM, // SPECIES_AIPOM + NATIONAL_DEX_SUNKERN, // SPECIES_SUNKERN + NATIONAL_DEX_SUNFLORA, // SPECIES_SUNFLORA + NATIONAL_DEX_YANMA, // SPECIES_YANMA + NATIONAL_DEX_WOOPER, // SPECIES_WOOPER + NATIONAL_DEX_QUAGSIRE, // SPECIES_QUAGSIRE + NATIONAL_DEX_ESPEON, // SPECIES_ESPEON + NATIONAL_DEX_UMBREON, // SPECIES_UMBREON + NATIONAL_DEX_MURKROW, // SPECIES_MURKROW + NATIONAL_DEX_SLOWKING, // SPECIES_SLOWKING + NATIONAL_DEX_MISDREAVUS, // SPECIES_MISDREAVUS + NATIONAL_DEX_UNOWN, // SPECIES_UNOWN + NATIONAL_DEX_WOBBUFFET, // SPECIES_WOBBUFFET + NATIONAL_DEX_GIRAFARIG, // SPECIES_GIRAFARIG + NATIONAL_DEX_PINECO, // SPECIES_PINECO + NATIONAL_DEX_FORRETRESS, // SPECIES_FORRETRESS + NATIONAL_DEX_DUNSPARCE, // SPECIES_DUNSPARCE + NATIONAL_DEX_GLIGAR, // SPECIES_GLIGAR + NATIONAL_DEX_STEELIX, // SPECIES_STEELIX + NATIONAL_DEX_SNUBBULL, // SPECIES_SNUBBULL + NATIONAL_DEX_GRANBULL, // SPECIES_GRANBULL + NATIONAL_DEX_QWILFISH, // SPECIES_QWILFISH + NATIONAL_DEX_SCIZOR, // SPECIES_SCIZOR + NATIONAL_DEX_SHUCKLE, // SPECIES_SHUCKLE + NATIONAL_DEX_HERACROSS, // SPECIES_HERACROSS + NATIONAL_DEX_SNEASEL, // SPECIES_SNEASEL + NATIONAL_DEX_TEDDIURSA, // SPECIES_TEDDIURSA + NATIONAL_DEX_URSARING, // SPECIES_URSARING + NATIONAL_DEX_SLUGMA, // SPECIES_SLUGMA + NATIONAL_DEX_MAGCARGO, // SPECIES_MAGCARGO + NATIONAL_DEX_SWINUB, // SPECIES_SWINUB + NATIONAL_DEX_PILOSWINE, // SPECIES_PILOSWINE + NATIONAL_DEX_CORSOLA, // SPECIES_CORSOLA + NATIONAL_DEX_REMORAID, // SPECIES_REMORAID + NATIONAL_DEX_OCTILLERY, // SPECIES_OCTILLERY + NATIONAL_DEX_DELIBIRD, // SPECIES_DELIBIRD + NATIONAL_DEX_MANTINE, // SPECIES_MANTINE + NATIONAL_DEX_SKARMORY, // SPECIES_SKARMORY + NATIONAL_DEX_HOUNDOUR, // SPECIES_HOUNDOUR + NATIONAL_DEX_HOUNDOOM, // SPECIES_HOUNDOOM + NATIONAL_DEX_KINGDRA, // SPECIES_KINGDRA + NATIONAL_DEX_PHANPY, // SPECIES_PHANPY + NATIONAL_DEX_DONPHAN, // SPECIES_DONPHAN + NATIONAL_DEX_PORYGON2, // SPECIES_PORYGON2 + NATIONAL_DEX_STANTLER, // SPECIES_STANTLER + NATIONAL_DEX_SMEARGLE, // SPECIES_SMEARGLE + NATIONAL_DEX_TYROGUE, // SPECIES_TYROGUE + NATIONAL_DEX_HITMONTOP, // SPECIES_HITMONTOP + NATIONAL_DEX_SMOOCHUM, // SPECIES_SMOOCHUM + NATIONAL_DEX_ELEKID, // SPECIES_ELEKID + NATIONAL_DEX_MAGBY, // SPECIES_MAGBY + NATIONAL_DEX_MILTANK, // SPECIES_MILTANK + NATIONAL_DEX_BLISSEY, // SPECIES_BLISSEY + NATIONAL_DEX_RAIKOU, // SPECIES_RAIKOU + NATIONAL_DEX_ENTEI, // SPECIES_ENTEI + NATIONAL_DEX_SUICUNE, // SPECIES_SUICUNE + NATIONAL_DEX_LARVITAR, // SPECIES_LARVITAR + NATIONAL_DEX_PUPITAR, // SPECIES_PUPITAR + NATIONAL_DEX_TYRANITAR, // SPECIES_TYRANITAR + NATIONAL_DEX_LUGIA, // SPECIES_LUGIA + NATIONAL_DEX_HO_OH, // SPECIES_HO-OH + NATIONAL_DEX_CELEBI, // SPECIES_CELEBI + NATIONAL_DEX_OLD_UNOWN_B, // SPECIES_OLD_UNOWN_B + NATIONAL_DEX_OLD_UNOWN_C, // SPECIES_OLD_UNOWN_C + NATIONAL_DEX_OLD_UNOWN_D, // SPECIES_OLD_UNOWN_D + NATIONAL_DEX_OLD_UNOWN_E, // SPECIES_OLD_UNOWN_E + NATIONAL_DEX_OLD_UNOWN_F, // SPECIES_OLD_UNOWN_F + NATIONAL_DEX_OLD_UNOWN_G, // SPECIES_OLD_UNOWN_G + NATIONAL_DEX_OLD_UNOWN_H, // SPECIES_OLD_UNOWN_H + NATIONAL_DEX_OLD_UNOWN_I, // SPECIES_OLD_UNOWN_I + NATIONAL_DEX_OLD_UNOWN_J, // SPECIES_OLD_UNOWN_J + NATIONAL_DEX_OLD_UNOWN_K, // SPECIES_OLD_UNOWN_K + NATIONAL_DEX_OLD_UNOWN_L, // SPECIES_OLD_UNOWN_L + NATIONAL_DEX_OLD_UNOWN_M, // SPECIES_OLD_UNOWN_M + NATIONAL_DEX_OLD_UNOWN_N, // SPECIES_OLD_UNOWN_N + NATIONAL_DEX_OLD_UNOWN_O, // SPECIES_OLD_UNOWN_O + NATIONAL_DEX_OLD_UNOWN_P, // SPECIES_OLD_UNOWN_P + NATIONAL_DEX_OLD_UNOWN_Q, // SPECIES_OLD_UNOWN_Q + NATIONAL_DEX_OLD_UNOWN_R, // SPECIES_OLD_UNOWN_R + NATIONAL_DEX_OLD_UNOWN_S, // SPECIES_OLD_UNOWN_S + NATIONAL_DEX_OLD_UNOWN_T, // SPECIES_OLD_UNOWN_T + NATIONAL_DEX_OLD_UNOWN_U, // SPECIES_OLD_UNOWN_U + NATIONAL_DEX_OLD_UNOWN_V, // SPECIES_OLD_UNOWN_V + NATIONAL_DEX_OLD_UNOWN_W, // SPECIES_OLD_UNOWN_W + NATIONAL_DEX_OLD_UNOWN_X, // SPECIES_OLD_UNOWN_X + NATIONAL_DEX_OLD_UNOWN_Y, // SPECIES_OLD_UNOWN_Y + NATIONAL_DEX_OLD_UNOWN_Z, // SPECIES_OLD_UNOWN_Z + NATIONAL_DEX_TREECKO, // SPECIES_TREECKO + NATIONAL_DEX_GROVYLE, // SPECIES_GROVYLE + NATIONAL_DEX_SCEPTILE, // SPECIES_SCEPTILE + NATIONAL_DEX_TORCHIC, // SPECIES_TORCHIC + NATIONAL_DEX_COMBUSKEN, // SPECIES_COMBUSKEN + NATIONAL_DEX_BLAZIKEN, // SPECIES_BLAZIKEN + NATIONAL_DEX_MUDKIP, // SPECIES_MUDKIP + NATIONAL_DEX_MARSHTOMP, // SPECIES_MARSHTOMP + NATIONAL_DEX_SWAMPERT, // SPECIES_SWAMPERT + NATIONAL_DEX_POOCHYENA, // SPECIES_POOCHYENA + NATIONAL_DEX_MIGHTYENA, // SPECIES_MIGHTYENA + NATIONAL_DEX_ZIGZAGOON, // SPECIES_ZIGZAGOON + NATIONAL_DEX_LINOONE, // SPECIES_LINOONE + NATIONAL_DEX_WURMPLE, // SPECIES_WURMPLE + NATIONAL_DEX_SILCOON, // SPECIES_SILCOON + NATIONAL_DEX_BEAUTIFLY, // SPECIES_BEAUTIFLY + NATIONAL_DEX_CASCOON, // SPECIES_CASCOON + NATIONAL_DEX_DUSTOX, // SPECIES_DUSTOX + NATIONAL_DEX_LOTAD, // SPECIES_LOTAD + NATIONAL_DEX_LOMBRE, // SPECIES_LOMBRE + NATIONAL_DEX_LUDICOLO, // SPECIES_LUDICOLO + NATIONAL_DEX_SEEDOT, // SPECIES_SEEDOT + NATIONAL_DEX_NUZLEAF, // SPECIES_NUZLEAF + NATIONAL_DEX_SHIFTRY, // SPECIES_SHIFTRY + NATIONAL_DEX_NINCADA, // SPECIES_NINCADA + NATIONAL_DEX_NINJASK, // SPECIES_NINJASK + NATIONAL_DEX_SHEDINJA, // SPECIES_SHEDINJA + NATIONAL_DEX_TAILLOW, // SPECIES_TAILLOW + NATIONAL_DEX_SWELLOW, // SPECIES_SWELLOW + NATIONAL_DEX_SHROOMISH, // SPECIES_SHROOMISH + NATIONAL_DEX_BRELOOM, // SPECIES_BRELOOM + NATIONAL_DEX_SPINDA, // SPECIES_SPINDA + NATIONAL_DEX_WINGULL, // SPECIES_WINGULL + NATIONAL_DEX_PELIPPER, // SPECIES_PELIPPER + NATIONAL_DEX_SURSKIT, // SPECIES_SURSKIT + NATIONAL_DEX_MASQUERAIN, // SPECIES_MASQUERAIN + NATIONAL_DEX_WAILMER, // SPECIES_WAILMER + NATIONAL_DEX_WAILORD, // SPECIES_WAILORD + NATIONAL_DEX_SKITTY, // SPECIES_SKITTY + NATIONAL_DEX_DELCATTY, // SPECIES_DELCATTY + NATIONAL_DEX_KECLEON, // SPECIES_KECLEON + NATIONAL_DEX_BALTOY, // SPECIES_BALTOY + NATIONAL_DEX_CLAYDOL, // SPECIES_CLAYDOL + NATIONAL_DEX_NOSEPASS, // SPECIES_NOSEPASS + NATIONAL_DEX_TORKOAL, // SPECIES_TORKOAL + NATIONAL_DEX_SABLEYE, // SPECIES_SABLEYE + NATIONAL_DEX_BARBOACH, // SPECIES_BARBOACH + NATIONAL_DEX_WHISCASH, // SPECIES_WHISCASH + NATIONAL_DEX_LUVDISC, // SPECIES_LUVDISC + NATIONAL_DEX_CORPHISH, // SPECIES_CORPHISH + NATIONAL_DEX_CRAWDAUNT, // SPECIES_CRAWDAUNT + NATIONAL_DEX_FEEBAS, // SPECIES_FEEBAS + NATIONAL_DEX_MILOTIC, // SPECIES_MILOTIC + NATIONAL_DEX_CARVANHA, // SPECIES_CARVANHA + NATIONAL_DEX_SHARPEDO, // SPECIES_SHARPEDO + NATIONAL_DEX_TRAPINCH, // SPECIES_TRAPINCH + NATIONAL_DEX_VIBRAVA, // SPECIES_VIBRAVA + NATIONAL_DEX_FLYGON, // SPECIES_FLYGON + NATIONAL_DEX_MAKUHITA, // SPECIES_MAKUHITA + NATIONAL_DEX_HARIYAMA, // SPECIES_HARIYAMA + NATIONAL_DEX_ELECTRIKE, // SPECIES_ELECTRIKE + NATIONAL_DEX_MANECTRIC, // SPECIES_MANECTRIC + NATIONAL_DEX_NUMEL, // SPECIES_NUMEL + NATIONAL_DEX_CAMERUPT, // SPECIES_CAMERUPT + NATIONAL_DEX_SPHEAL, // SPECIES_SPHEAL + NATIONAL_DEX_SEALEO, // SPECIES_SEALEO + NATIONAL_DEX_WALREIN, // SPECIES_WALREIN + NATIONAL_DEX_CACNEA, // SPECIES_CACNEA + NATIONAL_DEX_CACTURNE, // SPECIES_CACTURNE + NATIONAL_DEX_SNORUNT, // SPECIES_SNORUNT + NATIONAL_DEX_GLALIE, // SPECIES_GLALIE + NATIONAL_DEX_LUNATONE, // SPECIES_LUNATONE + NATIONAL_DEX_SOLROCK, // SPECIES_SOLROCK + NATIONAL_DEX_AZURILL, // SPECIES_AZURILL + NATIONAL_DEX_SPOINK, // SPECIES_SPOINK + NATIONAL_DEX_GRUMPIG, // SPECIES_GRUMPIG + NATIONAL_DEX_PLUSLE, // SPECIES_PLUSLE + NATIONAL_DEX_MINUN, // SPECIES_MINUN + NATIONAL_DEX_MAWILE, // SPECIES_MAWILE + NATIONAL_DEX_MEDITITE, // SPECIES_MEDITITE + NATIONAL_DEX_MEDICHAM, // SPECIES_MEDICHAM + NATIONAL_DEX_SWABLU, // SPECIES_SWABLU + NATIONAL_DEX_ALTARIA, // SPECIES_ALTARIA + NATIONAL_DEX_WYNAUT, // SPECIES_WYNAUT + NATIONAL_DEX_DUSKULL, // SPECIES_DUSKULL + NATIONAL_DEX_DUSCLOPS, // SPECIES_DUSCLOPS + NATIONAL_DEX_ROSELIA, // SPECIES_ROSELIA + NATIONAL_DEX_SLAKOTH, // SPECIES_SLAKOTH + NATIONAL_DEX_VIGOROTH, // SPECIES_VIGOROTH + NATIONAL_DEX_SLAKING, // SPECIES_SLAKING + NATIONAL_DEX_GULPIN, // SPECIES_GULPIN + NATIONAL_DEX_SWALOT, // SPECIES_SWALOT + NATIONAL_DEX_TROPIUS, // SPECIES_TROPIUS + NATIONAL_DEX_WHISMUR, // SPECIES_WHISMUR + NATIONAL_DEX_LOUDRED, // SPECIES_LOUDRED + NATIONAL_DEX_EXPLOUD, // SPECIES_EXPLOUD + NATIONAL_DEX_CLAMPERL, // SPECIES_CLAMPERL + NATIONAL_DEX_HUNTAIL, // SPECIES_HUNTAIL + NATIONAL_DEX_GOREBYSS, // SPECIES_GOREBYSS + NATIONAL_DEX_ABSOL, // SPECIES_ABSOL + NATIONAL_DEX_SHUPPET, // SPECIES_SHUPPET + NATIONAL_DEX_BANETTE, // SPECIES_BANETTE + NATIONAL_DEX_SEVIPER, // SPECIES_SEVIPER + NATIONAL_DEX_ZANGOOSE, // SPECIES_ZANGOOSE + NATIONAL_DEX_RELICANTH, // SPECIES_RELICANTH + NATIONAL_DEX_ARON, // SPECIES_ARON + NATIONAL_DEX_LAIRON, // SPECIES_LAIRON + NATIONAL_DEX_AGGRON, // SPECIES_AGGRON + NATIONAL_DEX_CASTFORM, // SPECIES_CASTFORM + NATIONAL_DEX_VOLBEAT, // SPECIES_VOLBEAT + NATIONAL_DEX_ILLUMISE, // SPECIES_ILLUMISE + NATIONAL_DEX_LILEEP, // SPECIES_LILEEP + NATIONAL_DEX_CRADILY, // SPECIES_CRADILY + NATIONAL_DEX_ANORITH, // SPECIES_ANORITH + NATIONAL_DEX_ARMALDO, // SPECIES_ARMALDO + NATIONAL_DEX_RALTS, // SPECIES_RALTS + NATIONAL_DEX_KIRLIA, // SPECIES_KIRLIA + NATIONAL_DEX_GARDEVOIR, // SPECIES_GARDEVOIR + NATIONAL_DEX_BAGON, // SPECIES_BAGON + NATIONAL_DEX_SHELGON, // SPECIES_SHELGON + NATIONAL_DEX_SALAMENCE, // SPECIES_SALAMENCE + NATIONAL_DEX_BELDUM, // SPECIES_BELDUM + NATIONAL_DEX_METANG, // SPECIES_METANG + NATIONAL_DEX_METAGROSS, // SPECIES_METAGROSS + NATIONAL_DEX_REGIROCK, // SPECIES_REGIROCK + NATIONAL_DEX_REGICE, // SPECIES_REGICE + NATIONAL_DEX_REGISTEEL, // SPECIES_REGISTEEL + NATIONAL_DEX_KYOGRE, // SPECIES_KYOGRE + NATIONAL_DEX_GROUDON, // SPECIES_GROUDON + NATIONAL_DEX_RAYQUAZA, // SPECIES_RAYQUAZA + NATIONAL_DEX_LATIAS, // SPECIES_LATIAS + NATIONAL_DEX_LATIOS, // SPECIES_LATIOS + NATIONAL_DEX_JIRACHI, // SPECIES_JIRACHI + NATIONAL_DEX_DEOXYS, // SPECIES_DEOXYS + NATIONAL_DEX_CHIMECHO // SPECIES_CHIMECHO +}; + +const u16 gHoennToNationalOrder[] = // Assigns Hoenn Dex Pokémon (Using National Dex Index) +{ + // 0 + NATIONAL_DEX_TREECKO, // HOENN_DEX_TREECKO + NATIONAL_DEX_GROVYLE, // HOENN_DEX_GROVYLE + NATIONAL_DEX_SCEPTILE, // HOENN_DEX_SCEPTILE + NATIONAL_DEX_TORCHIC, // HOENN_DEX_TORCHIC + NATIONAL_DEX_COMBUSKEN, // HOENN_DEX_COMBUSKEN + NATIONAL_DEX_BLAZIKEN, // HOENN_DEX_BLAZIKEN + NATIONAL_DEX_MUDKIP, // HOENN_DEX_MUDKIP + NATIONAL_DEX_MARSHTOMP, // HOENN_DEX_MARSHTOMP + NATIONAL_DEX_SWAMPERT, // HOENN_DEX_SWAMPERT + NATIONAL_DEX_POOCHYENA, // HOENN_DEX_POOCHYENA + NATIONAL_DEX_MIGHTYENA, // HOENN_DEX_MIGHTYENA + NATIONAL_DEX_ZIGZAGOON, // HOENN_DEX_ZIGZAGOON + NATIONAL_DEX_LINOONE, // HOENN_DEX_LINOONE + NATIONAL_DEX_WURMPLE, // HOENN_DEX_WURMPLE + NATIONAL_DEX_SILCOON, // HOENN_DEX_SILCOON + NATIONAL_DEX_BEAUTIFLY, // HOENN_DEX_BEAUTIFLY + NATIONAL_DEX_CASCOON, // HOENN_DEX_CASCOON + NATIONAL_DEX_DUSTOX, // HOENN_DEX_DUSTOX + NATIONAL_DEX_LOTAD, // HOENN_DEX_LOTAD + NATIONAL_DEX_LOMBRE, // HOENN_DEX_LOMBRE + NATIONAL_DEX_LUDICOLO, // HOENN_DEX_LUDICOLO + NATIONAL_DEX_SEEDOT, // HOENN_DEX_SEEDOT + NATIONAL_DEX_NUZLEAF, // HOENN_DEX_NUZLEAF + NATIONAL_DEX_SHIFTRY, // HOENN_DEX_SHIFTRY + NATIONAL_DEX_TAILLOW, // HOENN_DEX_TAILLOW + NATIONAL_DEX_SWELLOW, // HOENN_DEX_SWELLOW + NATIONAL_DEX_WINGULL, // HOENN_DEX_WINGULL + NATIONAL_DEX_PELIPPER, // HOENN_DEX_PELIPPER + NATIONAL_DEX_RALTS, // HOENN_DEX_RALTS + NATIONAL_DEX_KIRLIA, // HOENN_DEX_KIRLIA + NATIONAL_DEX_GARDEVOIR, // HOENN_DEX_GARDEVOIR + NATIONAL_DEX_SURSKIT, // HOENN_DEX_SURSKIT + NATIONAL_DEX_MASQUERAIN, // HOENN_DEX_MASQUERAIN + NATIONAL_DEX_SHROOMISH, // HOENN_DEX_SHROOMISH + NATIONAL_DEX_BRELOOM, // HOENN_DEX_BRELOOM + NATIONAL_DEX_SLAKOTH, // HOENN_DEX_SLAKOTH + NATIONAL_DEX_VIGOROTH, // HOENN_DEX_VIGOROTH + NATIONAL_DEX_SLAKING, // HOENN_DEX_SLAKING + NATIONAL_DEX_ABRA, // HOENN_DEX_ABRA + NATIONAL_DEX_KADABRA, // HOENN_DEX_KADABRA + NATIONAL_DEX_ALAKAZAM, // HOENN_DEX_ALAKAZAM + NATIONAL_DEX_NINCADA, // HOENN_DEX_NINCADA + NATIONAL_DEX_NINJASK, // HOENN_DEX_NINJASK + NATIONAL_DEX_SHEDINJA, // HOENN_DEX_SHEDINJA + NATIONAL_DEX_WHISMUR, // HOENN_DEX_WHISMUR + NATIONAL_DEX_LOUDRED, // HOENN_DEX_LOUDRED + NATIONAL_DEX_EXPLOUD, // HOENN_DEX_EXPLOUD + NATIONAL_DEX_MAKUHITA, // HOENN_DEX_MAKUHITA + NATIONAL_DEX_HARIYAMA, // HOENN_DEX_HARIYAMA + NATIONAL_DEX_GOLDEEN, // HOENN_DEX_GOLDEEN + NATIONAL_DEX_SEAKING, // HOENN_DEX_SEAKING + NATIONAL_DEX_MAGIKARP, // HOENN_DEX_MAGIKARP + NATIONAL_DEX_GYARADOS, // HOENN_DEX_GYARADOS + NATIONAL_DEX_AZURILL, // HOENN_DEX_AZURILL + NATIONAL_DEX_MARILL, // HOENN_DEX_MARILL + NATIONAL_DEX_AZUMARILL, // HOENN_DEX_AZUMARILL + NATIONAL_DEX_GEODUDE, // HOENN_DEX_GEODUDE + NATIONAL_DEX_GRAVELER, // HOENN_DEX_GRAVELER + NATIONAL_DEX_GOLEM, // HOENN_DEX_GOLEM + NATIONAL_DEX_NOSEPASS, // HOENN_DEX_NOSEPASS + NATIONAL_DEX_SKITTY, // HOENN_DEX_SKITTY + NATIONAL_DEX_DELCATTY, // HOENN_DEX_DELCATTY + NATIONAL_DEX_ZUBAT, // HOENN_DEX_ZUBAT + NATIONAL_DEX_GOLBAT, // HOENN_DEX_GOLBAT + NATIONAL_DEX_CROBAT, // HOENN_DEX_CROBAT + NATIONAL_DEX_TENTACOOL, // HOENN_DEX_TENTACOOL + NATIONAL_DEX_TENTACRUEL, // HOENN_DEX_TENTACRUEL + NATIONAL_DEX_SABLEYE, // HOENN_DEX_SABLEYE + NATIONAL_DEX_MAWILE, // HOENN_DEX_MAWILE + NATIONAL_DEX_ARON, // HOENN_DEX_ARON + NATIONAL_DEX_LAIRON, // HOENN_DEX_LAIRON + NATIONAL_DEX_AGGRON, // HOENN_DEX_AGGRON + NATIONAL_DEX_MACHOP, // HOENN_DEX_MACHOP + NATIONAL_DEX_MACHOKE, // HOENN_DEX_MACHOKE + NATIONAL_DEX_MACHAMP, // HOENN_DEX_MACHAMP + NATIONAL_DEX_MEDITITE, // HOENN_DEX_MEDITITE + NATIONAL_DEX_MEDICHAM, // HOENN_DEX_MEDICHAM + NATIONAL_DEX_ELECTRIKE, // HOENN_DEX_ELECTRIKE + NATIONAL_DEX_MANECTRIC, // HOENN_DEX_MANECTRIC + NATIONAL_DEX_PLUSLE, // HOENN_DEX_PLUSLE + NATIONAL_DEX_MINUN, // HOENN_DEX_MINUN + NATIONAL_DEX_MAGNEMITE, // HOENN_DEX_MAGNEMITE + NATIONAL_DEX_MAGNETON, // HOENN_DEX_MAGNETON + NATIONAL_DEX_VOLTORB, // HOENN_DEX_VOLTORB + NATIONAL_DEX_ELECTRODE, // HOENN_DEX_ELECTRODE + NATIONAL_DEX_VOLBEAT, // HOENN_DEX_VOLBEAT + NATIONAL_DEX_ILLUMISE, // HOENN_DEX_ILLUMISE + NATIONAL_DEX_ODDISH, // HOENN_DEX_ODDISH + NATIONAL_DEX_GLOOM, // HOENN_DEX_GLOOM + NATIONAL_DEX_VILEPLUME, // HOENN_DEX_VILEPLUME + NATIONAL_DEX_BELLOSSOM, // HOENN_DEX_BELLOSSOM + NATIONAL_DEX_DODUO, // HOENN_DEX_DODUO + NATIONAL_DEX_DODRIO, // HOENN_DEX_DODRIO + NATIONAL_DEX_ROSELIA, // HOENN_DEX_ROSELIA + NATIONAL_DEX_GULPIN, // HOENN_DEX_GULPIN + NATIONAL_DEX_SWALOT, // HOENN_DEX_SWALOT + NATIONAL_DEX_CARVANHA, // HOENN_DEX_CARVANHA + NATIONAL_DEX_SHARPEDO, // HOENN_DEX_SHARPEDO + NATIONAL_DEX_WAILMER, // HOENN_DEX_WAILMER + NATIONAL_DEX_WAILORD, // HOENN_DEX_WAILORD + NATIONAL_DEX_NUMEL, // HOENN_DEX_NUMEL + NATIONAL_DEX_CAMERUPT, // HOENN_DEX_CAMERUPT + NATIONAL_DEX_SLUGMA, // HOENN_DEX_SLUGMA + NATIONAL_DEX_MAGCARGO, // HOENN_DEX_MAGCARGO + NATIONAL_DEX_TORKOAL, // HOENN_DEX_TORKOAL + NATIONAL_DEX_GRIMER, // HOENN_DEX_GRIMER + NATIONAL_DEX_MUK, // HOENN_DEX_MUK + NATIONAL_DEX_KOFFING, // HOENN_DEX_KOFFING + NATIONAL_DEX_WEEZING, // HOENN_DEX_WEEZING + NATIONAL_DEX_SPOINK, // HOENN_DEX_SPOINK + NATIONAL_DEX_GRUMPIG, // HOENN_DEX_GRUMPIG + NATIONAL_DEX_SANDSHREW, // HOENN_DEX_SANDSHREW + NATIONAL_DEX_SANDSLASH, // HOENN_DEX_SANDSLASH + NATIONAL_DEX_SPINDA, // HOENN_DEX_SPINDA + NATIONAL_DEX_SKARMORY, // HOENN_DEX_SKARMORY + NATIONAL_DEX_TRAPINCH, // HOENN_DEX_TRAPINCH + NATIONAL_DEX_VIBRAVA, // HOENN_DEX_VIBRAVA + NATIONAL_DEX_FLYGON, // HOENN_DEX_FLYGON + NATIONAL_DEX_CACNEA, // HOENN_DEX_CACNEA + NATIONAL_DEX_CACTURNE, // HOENN_DEX_CACTURNE + NATIONAL_DEX_SWABLU, // HOENN_DEX_SWABLU + NATIONAL_DEX_ALTARIA, // HOENN_DEX_ALTARIA + NATIONAL_DEX_ZANGOOSE, // HOENN_DEX_ZANGOOSE + NATIONAL_DEX_SEVIPER, // HOENN_DEX_SEVIPER + NATIONAL_DEX_LUNATONE, // HOENN_DEX_LUNATONE + NATIONAL_DEX_SOLROCK, // HOENN_DEX_SOLROCK + NATIONAL_DEX_BARBOACH, // HOENN_DEX_BARBOACH + NATIONAL_DEX_WHISCASH, // HOENN_DEX_WHISCASH + NATIONAL_DEX_CORPHISH, // HOENN_DEX_CORPHISH + NATIONAL_DEX_CRAWDAUNT, // HOENN_DEX_CRAWDAUNT + NATIONAL_DEX_BALTOY, // HOENN_DEX_BALTOY + NATIONAL_DEX_CLAYDOL, // HOENN_DEX_CLAYDOL + NATIONAL_DEX_LILEEP, // HOENN_DEX_LILEEP + NATIONAL_DEX_CRADILY, // HOENN_DEX_CRADILY + NATIONAL_DEX_ANORITH, // HOENN_DEX_ANORITH + NATIONAL_DEX_ARMALDO, // HOENN_DEX_ARMALDO + NATIONAL_DEX_IGGLYBUFF, // HOENN_DEX_IGGLYBUFF + NATIONAL_DEX_JIGGLYPUFF, // HOENN_DEX_JIGGLYPUFF + NATIONAL_DEX_WIGGLYTUFF, // HOENN_DEX_WIGGLYTUFF + NATIONAL_DEX_FEEBAS, // HOENN_DEX_FEEBAS + NATIONAL_DEX_MILOTIC, // HOENN_DEX_MILOTIC + NATIONAL_DEX_CASTFORM, // HOENN_DEX_CASTFORM + NATIONAL_DEX_STARYU, // HOENN_DEX_STARYU + NATIONAL_DEX_STARMIE, // HOENN_DEX_STARMIE + NATIONAL_DEX_KECLEON, // HOENN_DEX_KECLEON + NATIONAL_DEX_SHUPPET, // HOENN_DEX_SHUPPET + NATIONAL_DEX_BANETTE, // HOENN_DEX_BANETTE + NATIONAL_DEX_DUSKULL, // HOENN_DEX_DUSKULL + NATIONAL_DEX_DUSCLOPS, // HOENN_DEX_DUSCLOPS + NATIONAL_DEX_TROPIUS, // HOENN_DEX_TROPIUS + NATIONAL_DEX_CHIMECHO, // HOENN_DEX_CHIMECHO + NATIONAL_DEX_ABSOL, // HOENN_DEX_ABSOL + NATIONAL_DEX_VULPIX, // HOENN_DEX_VULPIX + NATIONAL_DEX_NINETALES, // HOENN_DEX_NINETALES + NATIONAL_DEX_PICHU, // HOENN_DEX_PICHU + NATIONAL_DEX_PIKACHU, // HOENN_DEX_PIKACHU + NATIONAL_DEX_RAICHU, // HOENN_DEX_RAICHU + NATIONAL_DEX_PSYDUCK, // HOENN_DEX_PSYDUCK + NATIONAL_DEX_GOLDUCK, // HOENN_DEX_GOLDUCK + NATIONAL_DEX_WYNAUT, // HOENN_DEX_WYNAUT + NATIONAL_DEX_WOBBUFFET, // HOENN_DEX_WOBBUFFET + NATIONAL_DEX_NATU, // HOENN_DEX_NATU + NATIONAL_DEX_XATU, // HOENN_DEX_XATU + NATIONAL_DEX_GIRAFARIG, // HOENN_DEX_GIRAFARIG + NATIONAL_DEX_PHANPY, // HOENN_DEX_PHANPY + NATIONAL_DEX_DONPHAN, // HOENN_DEX_DONPHAN + NATIONAL_DEX_PINSIR, // HOENN_DEX_PINSIR + NATIONAL_DEX_HERACROSS, // HOENN_DEX_HERACROSS + NATIONAL_DEX_RHYHORN, // HOENN_DEX_RHYHORN + NATIONAL_DEX_RHYDON, // HOENN_DEX_RHYDON + NATIONAL_DEX_SNORUNT, // HOENN_DEX_SNORUNT + NATIONAL_DEX_GLALIE, // HOENN_DEX_GLALIE + NATIONAL_DEX_SPHEAL, // HOENN_DEX_SPHEAL + NATIONAL_DEX_SEALEO, // HOENN_DEX_SEALEO + NATIONAL_DEX_WALREIN, // HOENN_DEX_WALREIN + NATIONAL_DEX_CLAMPERL, // HOENN_DEX_CLAMPERL + NATIONAL_DEX_HUNTAIL, // HOENN_DEX_HUNTAIL + NATIONAL_DEX_GOREBYSS, // HOENN_DEX_GOREBYSS + NATIONAL_DEX_RELICANTH, // HOENN_DEX_RELICANTH + NATIONAL_DEX_CORSOLA, // HOENN_DEX_CORSOLA + NATIONAL_DEX_CHINCHOU, // HOENN_DEX_CHINCHOU + NATIONAL_DEX_LANTURN, // HOENN_DEX_LANTURN + NATIONAL_DEX_LUVDISC, // HOENN_DEX_LUVDISC + NATIONAL_DEX_HORSEA, // HOENN_DEX_HORSEA + NATIONAL_DEX_SEADRA, // HOENN_DEX_SEADRA + NATIONAL_DEX_KINGDRA, // HOENN_DEX_KINGDRA + NATIONAL_DEX_BAGON, // HOENN_DEX_BAGON + NATIONAL_DEX_SHELGON, // HOENN_DEX_SHELGON + NATIONAL_DEX_SALAMENCE, // HOENN_DEX_SALAMENCE + NATIONAL_DEX_BELDUM, // HOENN_DEX_BELDUM + NATIONAL_DEX_METANG, // HOENN_DEX_METANG + NATIONAL_DEX_METAGROSS, // HOENN_DEX_METAGROSS + NATIONAL_DEX_REGIROCK, // HOENN_DEX_REGIROCK + NATIONAL_DEX_REGICE, // HOENN_DEX_REGICE + NATIONAL_DEX_REGISTEEL, // HOENN_DEX_REGISTEEL + NATIONAL_DEX_LATIAS, // HOENN_DEX_LATIAS + NATIONAL_DEX_LATIOS, // HOENN_DEX_LATIOS + NATIONAL_DEX_KYOGRE, // HOENN_DEX_KYOGRE + NATIONAL_DEX_GROUDON, // HOENN_DEX_GROUDON + NATIONAL_DEX_RAYQUAZA, // HOENN_DEX_RAYQUAZA + NATIONAL_DEX_JIRACHI, // HOENN_DEX_JIRACHI + NATIONAL_DEX_DEOXYS, // HOENN_DEX_DEOXYS + NATIONAL_DEX_BULBASAUR, // HOENN_DEX_BULBASAUR - Pokémon from here onwards are UNSEEN in the Hoenn Dex. + NATIONAL_DEX_IVYSAUR, // HOENN_DEX_IVYSAUR + NATIONAL_DEX_VENUSAUR, // HOENN_DEX_VENUSAUR + NATIONAL_DEX_CHARMANDER, // HOENN_DEX_CHARMANDER + NATIONAL_DEX_CHARMELEON, // HOENN_DEX_CHARMELEON + NATIONAL_DEX_CHARIZARD, // HOENN_DEX_CHARIZARD + NATIONAL_DEX_SQUIRTLE, // HOENN_DEX_SQUIRTLE + NATIONAL_DEX_WARTORTLE, // HOENN_DEX_WARTORTLE + NATIONAL_DEX_BLASTOISE, // HOENN_DEX_BLASTOISE + NATIONAL_DEX_CATERPIE, // HOENN_DEX_CATERPIE + NATIONAL_DEX_METAPOD, // HOENN_DEX_METAPOD + NATIONAL_DEX_BUTTERFREE, // HOENN_DEX_BUTTERFREE + NATIONAL_DEX_WEEDLE, // HOENN_DEX_WEEDLE + NATIONAL_DEX_KAKUNA, // HOENN_DEX_KAKUNA + NATIONAL_DEX_BEEDRILL, // HOENN_DEX_BEEDRILL + NATIONAL_DEX_PIDGEY, // HOENN_DEX_PIDGEY + NATIONAL_DEX_PIDGEOTTO, // HOENN_DEX_PIDGEOTTO + NATIONAL_DEX_PIDGEOT, // HOENN_DEX_PIDGEOT + NATIONAL_DEX_RATTATA, // HOENN_DEX_RATTATA + NATIONAL_DEX_RATICATE, // HOENN_DEX_RATICATE + NATIONAL_DEX_SPEAROW, // HOENN_DEX_SPEAROW + NATIONAL_DEX_FEAROW, // HOENN_DEX_FEAROW + NATIONAL_DEX_EKANS, // HOENN_DEX_EKANS + NATIONAL_DEX_ARBOK, // HOENN_DEX_ARBOK + NATIONAL_DEX_NIDORAN_F, // HOENN_DEX_NIDORAN♀ + NATIONAL_DEX_NIDORINA, // HOENN_DEX_NIDORINA + NATIONAL_DEX_NIDOQUEEN, // HOENN_DEX_NIDOQUEEN + NATIONAL_DEX_NIDORAN_M, // HOENN_DEX_NIDORAN♂ + NATIONAL_DEX_NIDORINO, // HOENN_DEX_NIDORINO + NATIONAL_DEX_NIDOKING, // HOENN_DEX_NIDOKING + NATIONAL_DEX_CLEFAIRY, // HOENN_DEX_CLEFAIRY + NATIONAL_DEX_CLEFABLE, // HOENN_DEX_CLEFABLE + NATIONAL_DEX_PARAS, // HOENN_DEX_PARAS + NATIONAL_DEX_PARASECT, // HOENN_DEX_PARASECT + NATIONAL_DEX_VENONAT, // HOENN_DEX_VENONAT + NATIONAL_DEX_VENOMOTH, // HOENN_DEX_VENOMOTH + NATIONAL_DEX_DIGLETT, // HOENN_DEX_DIGLETT + NATIONAL_DEX_DUGTRIO, // HOENN_DEX_DUGTRIO + NATIONAL_DEX_MEOWTH, // HOENN_DEX_MEOWTH + NATIONAL_DEX_PERSIAN, // HOENN_DEX_PERSIAN + NATIONAL_DEX_MANKEY, // HOENN_DEX_MANKEY + NATIONAL_DEX_PRIMEAPE, // HOENN_DEX_PRIMEAPE + NATIONAL_DEX_GROWLITHE, // HOENN_DEX_GROWLITHE + NATIONAL_DEX_ARCANINE, // HOENN_DEX_ARCANINE + NATIONAL_DEX_POLIWAG, // HOENN_DEX_POLIWAG + NATIONAL_DEX_POLIWHIRL, // HOENN_DEX_POLIWHIRL + NATIONAL_DEX_POLIWRATH, // HOENN_DEX_POLIWRATH + NATIONAL_DEX_BELLSPROUT, // HOENN_DEX_BELLSPROUT + NATIONAL_DEX_WEEPINBELL, // HOENN_DEX_WEEPINBELL + NATIONAL_DEX_VICTREEBEL, // HOENN_DEX_VICTREEBEL + NATIONAL_DEX_PONYTA, // HOENN_DEX_PONYTA + NATIONAL_DEX_RAPIDASH, // HOENN_DEX_RAPIDASH + NATIONAL_DEX_SLOWPOKE, // HOENN_DEX_SLOWPOKE + NATIONAL_DEX_SLOWBRO, // HOENN_DEX_SLOWBRO + NATIONAL_DEX_FARFETCHD, // HOENN_DEX_FARFETCH'D + NATIONAL_DEX_SEEL, // HOENN_DEX_SEEL + NATIONAL_DEX_DEWGONG, // HOENN_DEX_DEWGONG + NATIONAL_DEX_SHELLDER, // HOENN_DEX_SHELLDER + NATIONAL_DEX_CLOYSTER, // HOENN_DEX_CLOYSTER + NATIONAL_DEX_GASTLY, // HOENN_DEX_GASTLY + NATIONAL_DEX_HAUNTER, // HOENN_DEX_HAUNTER + NATIONAL_DEX_GENGAR, // HOENN_DEX_GENGAR + NATIONAL_DEX_ONIX, // HOENN_DEX_ONIX + NATIONAL_DEX_DROWZEE, // HOENN_DEX_DROWZEE + NATIONAL_DEX_HYPNO, // HOENN_DEX_HYPNO + NATIONAL_DEX_KRABBY, // HOENN_DEX_KRABBY + NATIONAL_DEX_KINGLER, // HOENN_DEX_KINGLER + NATIONAL_DEX_EXEGGCUTE, // HOENN_DEX_EXEGGCUTE + NATIONAL_DEX_EXEGGUTOR, // HOENN_DEX_EXEGGUTOR + NATIONAL_DEX_CUBONE, // HOENN_DEX_CUBONE + NATIONAL_DEX_MAROWAK, // HOENN_DEX_MAROWAK + NATIONAL_DEX_HITMONLEE, // HOENN_DEX_HITMONLEE + NATIONAL_DEX_HITMONCHAN, // HOENN_DEX_HITMONCHAN + NATIONAL_DEX_LICKITUNG, // HOENN_DEX_LICKITUNG + NATIONAL_DEX_CHANSEY, // HOENN_DEX_CHANSEY + NATIONAL_DEX_TANGELA, // HOENN_DEX_TANGELA + NATIONAL_DEX_KANGASKHAN, // HOENN_DEX_KANGASKHAN + NATIONAL_DEX_MR_MIME, // HOENN_DEX_MR. MIME + NATIONAL_DEX_SCYTHER, // HOENN_DEX_SCYTHER + NATIONAL_DEX_JYNX, // HOENN_DEX_JYNX + NATIONAL_DEX_ELECTABUZZ, // HOENN_DEX_ELECTABUZZ + NATIONAL_DEX_MAGMAR, // HOENN_DEX_MAGMAR + NATIONAL_DEX_TAUROS, // HOENN_DEX_TAUROS + NATIONAL_DEX_LAPRAS, // HOENN_DEX_LAPRAS + NATIONAL_DEX_DITTO, // HOENN_DEX_DITTO + NATIONAL_DEX_EEVEE, // HOENN_DEX_EEVEE + NATIONAL_DEX_VAPOREON, // HOENN_DEX_VAPOREON + NATIONAL_DEX_JOLTEON, // HOENN_DEX_JOLTEON + NATIONAL_DEX_FLAREON, // HOENN_DEX_FLAREON + NATIONAL_DEX_PORYGON, // HOENN_DEX_PORYGON + NATIONAL_DEX_OMANYTE, // HOENN_DEX_OMANYTE + NATIONAL_DEX_OMASTAR, // HOENN_DEX_OMASTAR + NATIONAL_DEX_KABUTO, // HOENN_DEX_KABUTO + NATIONAL_DEX_KABUTOPS, // HOENN_DEX_KABUTOPS + NATIONAL_DEX_AERODACTYL, // HOENN_DEX_AERODACTYL + NATIONAL_DEX_SNORLAX, // HOENN_DEX_SNORLAX + NATIONAL_DEX_ARTICUNO, // HOENN_DEX_ARTICUNO + NATIONAL_DEX_ZAPDOS, // HOENN_DEX_ZAPDOS + NATIONAL_DEX_MOLTRES, // HOENN_DEX_MOLTRES + NATIONAL_DEX_DRATINI, // HOENN_DEX_DRATINI + NATIONAL_DEX_DRAGONAIR, // HOENN_DEX_DRAGONAIR + NATIONAL_DEX_DRAGONITE, // HOENN_DEX_DRAGONITE + NATIONAL_DEX_MEWTWO, // HOENN_DEX_MEWTWO + NATIONAL_DEX_MEW, // HOENN_DEX_MEW + NATIONAL_DEX_CHIKORITA, // HOENN_DEX_CHIKORITA + NATIONAL_DEX_BAYLEEF, // HOENN_DEX_BAYLEEF + NATIONAL_DEX_MEGANIUM, // HOENN_DEX_MEGANIUM + NATIONAL_DEX_CYNDAQUIL, // HOENN_DEX_CYNDAQUIL + NATIONAL_DEX_QUILAVA, // HOENN_DEX_QUILAVA + NATIONAL_DEX_TYPHLOSION, // HOENN_DEX_TYPHLOSION + NATIONAL_DEX_TOTODILE, // HOENN_DEX_TOTODILE + NATIONAL_DEX_CROCONAW, // HOENN_DEX_CROCONAW + NATIONAL_DEX_FERALIGATR, // HOENN_DEX_FERALIGATR + NATIONAL_DEX_SENTRET, // HOENN_DEX_SENTRET + NATIONAL_DEX_FURRET, // HOENN_DEX_FURRET + NATIONAL_DEX_HOOTHOOT, // HOENN_DEX_HOOTHOOT + NATIONAL_DEX_NOCTOWL, // HOENN_DEX_NOCTOWL + NATIONAL_DEX_LEDYBA, // HOENN_DEX_LEDYBA + NATIONAL_DEX_LEDIAN, // HOENN_DEX_LEDIAN + NATIONAL_DEX_SPINARAK, // HOENN_DEX_SPINARAK + NATIONAL_DEX_ARIADOS, // HOENN_DEX_ARIADOS + NATIONAL_DEX_CLEFFA, // HOENN_DEX_CLEFFA + NATIONAL_DEX_TOGEPI, // HOENN_DEX_TOGEPI + NATIONAL_DEX_TOGETIC, // HOENN_DEX_TOGETIC + NATIONAL_DEX_MAREEP, // HOENN_DEX_MAREEP + NATIONAL_DEX_FLAAFFY, // HOENN_DEX_FLAAFFY + NATIONAL_DEX_AMPHAROS, // HOENN_DEX_AMPHAROS + NATIONAL_DEX_SUDOWOODO, // HOENN_DEX_SUDOWOODO + NATIONAL_DEX_POLITOED, // HOENN_DEX_POLITOED + NATIONAL_DEX_HOPPIP, // HOENN_DEX_HOPPIP + NATIONAL_DEX_SKIPLOOM, // HOENN_DEX_SKIPLOOM + NATIONAL_DEX_JUMPLUFF, // HOENN_DEX_JUMPLUFF + NATIONAL_DEX_AIPOM, // HOENN_DEX_AIPOM + NATIONAL_DEX_SUNKERN, // HOENN_DEX_SUNKERN + NATIONAL_DEX_SUNFLORA, // HOENN_DEX_SUNFLORA + NATIONAL_DEX_YANMA, // HOENN_DEX_YANMA + NATIONAL_DEX_WOOPER, // HOENN_DEX_WOOPER + NATIONAL_DEX_QUAGSIRE, // HOENN_DEX_QUAGSIRE + NATIONAL_DEX_ESPEON, // HOENN_DEX_ESPEON + NATIONAL_DEX_UMBREON, // HOENN_DEX_UMBREON + NATIONAL_DEX_MURKROW, // HOENN_DEX_MURKROW + NATIONAL_DEX_SLOWKING, // HOENN_DEX_SLOWKING + NATIONAL_DEX_MISDREAVUS, // HOENN_DEX_MISDREAVUS + NATIONAL_DEX_UNOWN, // HOENN_DEX_UNOWN + NATIONAL_DEX_PINECO, // HOENN_DEX_PINECO + NATIONAL_DEX_FORRETRESS, // HOENN_DEX_FORRETRESS + NATIONAL_DEX_DUNSPARCE, // HOENN_DEX_DUNSPARCE + NATIONAL_DEX_GLIGAR, // HOENN_DEX_GLIGAR + NATIONAL_DEX_STEELIX, // HOENN_DEX_STEELIX + NATIONAL_DEX_SNUBBULL, // HOENN_DEX_SNUBBULL + NATIONAL_DEX_GRANBULL, // HOENN_DEX_GRANBULL + NATIONAL_DEX_QWILFISH, // HOENN_DEX_QWILFISH + NATIONAL_DEX_SCIZOR, // HOENN_DEX_SCIZOR + NATIONAL_DEX_SHUCKLE, // HOENN_DEX_SHUCKLE + NATIONAL_DEX_SNEASEL, // HOENN_DEX_SNEASEL + NATIONAL_DEX_TEDDIURSA, // HOENN_DEX_TEDDIURSA + NATIONAL_DEX_URSARING, // HOENN_DEX_URSARING + NATIONAL_DEX_SWINUB, // HOENN_DEX_SWINUB + NATIONAL_DEX_PILOSWINE, // HOENN_DEX_PILOSWINE + NATIONAL_DEX_REMORAID, // HOENN_DEX_REMORAID + NATIONAL_DEX_OCTILLERY, // HOENN_DEX_OCTILLERY + NATIONAL_DEX_DELIBIRD, // HOENN_DEX_DELIBIRD + NATIONAL_DEX_MANTINE, // HOENN_DEX_MANTINE + NATIONAL_DEX_HOUNDOUR, // HOENN_DEX_HOUNDOUR + NATIONAL_DEX_HOUNDOOM, // HOENN_DEX_HOUNDOOM + NATIONAL_DEX_PORYGON2, // HOENN_DEX_PORYGON2 + NATIONAL_DEX_STANTLER, // HOENN_DEX_STANTLER + NATIONAL_DEX_SMEARGLE, // HOENN_DEX_SMEARGLE + NATIONAL_DEX_TYROGUE, // HOENN_DEX_TYROGUE + NATIONAL_DEX_HITMONTOP, // HOENN_DEX_HITMONTOP + NATIONAL_DEX_SMOOCHUM, // HOENN_DEX_SMOOCHUM + NATIONAL_DEX_ELEKID, // HOENN_DEX_ELEKID + NATIONAL_DEX_MAGBY, // HOENN_DEX_MAGBY + NATIONAL_DEX_MILTANK, // HOENN_DEX_MILTANK + NATIONAL_DEX_BLISSEY, // HOENN_DEX_BLISSEY + NATIONAL_DEX_RAIKOU, // HOENN_DEX_RAIKOU + NATIONAL_DEX_ENTEI, // HOENN_DEX_ENTEI + NATIONAL_DEX_SUICUNE, // HOENN_DEX_SUICUNE + NATIONAL_DEX_LARVITAR, // HOENN_DEX_LARVITAR + NATIONAL_DEX_PUPITAR, // HOENN_DEX_PUPITAR + NATIONAL_DEX_TYRANITAR, // HOENN_DEX_TYRANITAR + NATIONAL_DEX_LUGIA, // HOENN_DEX_LUGIA + NATIONAL_DEX_HO_OH, // HOENN_DEX_HO-OH + NATIONAL_DEX_CELEBI, // HOENN_DEX_CELEBI + NATIONAL_DEX_OLD_UNOWN_B, // HOENN_DEX_OLD_UNOWN_B + NATIONAL_DEX_OLD_UNOWN_C, // HOENN_DEX_OLD_UNOWN_C + NATIONAL_DEX_OLD_UNOWN_D, // HOENN_DEX_OLD_UNOWN_D + NATIONAL_DEX_OLD_UNOWN_E, // HOENN_DEX_OLD_UNOWN_E + NATIONAL_DEX_OLD_UNOWN_F, // HOENN_DEX_OLD_UNOWN_F + NATIONAL_DEX_OLD_UNOWN_G, // HOENN_DEX_OLD_UNOWN_G + NATIONAL_DEX_OLD_UNOWN_H, // HOENN_DEX_OLD_UNOWN_H + NATIONAL_DEX_OLD_UNOWN_I, // HOENN_DEX_OLD_UNOWN_I + NATIONAL_DEX_OLD_UNOWN_J, // HOENN_DEX_OLD_UNOWN_J + NATIONAL_DEX_OLD_UNOWN_K, // HOENN_DEX_OLD_UNOWN_K + NATIONAL_DEX_OLD_UNOWN_L, // HOENN_DEX_OLD_UNOWN_L + NATIONAL_DEX_OLD_UNOWN_M, // HOENN_DEX_OLD_UNOWN_M + NATIONAL_DEX_OLD_UNOWN_N, // HOENN_DEX_OLD_UNOWN_N + NATIONAL_DEX_OLD_UNOWN_O, // HOENN_DEX_OLD_UNOWN_O + NATIONAL_DEX_OLD_UNOWN_P, // HOENN_DEX_OLD_UNOWN_P + NATIONAL_DEX_OLD_UNOWN_Q, // HOENN_DEX_OLD_UNOWN_Q + NATIONAL_DEX_OLD_UNOWN_R, // HOENN_DEX_OLD_UNOWN_R + NATIONAL_DEX_OLD_UNOWN_S, // HOENN_DEX_OLD_UNOWN_S + NATIONAL_DEX_OLD_UNOWN_T, // HOENN_DEX_OLD_UNOWN_T + NATIONAL_DEX_OLD_UNOWN_U, // HOENN_DEX_OLD_UNOWN_U + NATIONAL_DEX_OLD_UNOWN_V, // HOENN_DEX_OLD_UNOWN_V + NATIONAL_DEX_OLD_UNOWN_W, // HOENN_DEX_OLD_UNOWN_W + NATIONAL_DEX_OLD_UNOWN_X, // HOENN_DEX_OLD_UNOWN_X + NATIONAL_DEX_OLD_UNOWN_Y, // HOENN_DEX_OLD_UNOWN_Y + NATIONAL_DEX_OLD_UNOWN_Z // HOENN_DEX_OLD_UNOWN_Z +}; const struct SpindaSpot gSpindaSpotGraphics[] = { -- cgit v1.2.3 From e7da51438286bceaa085aad524065cbfe645faf0 Mon Sep 17 00:00:00 2001 From: Diegoisawesome Date: Wed, 15 Aug 2018 15:58:41 -0700 Subject: Finish documenting and cleaning up summary_screen Also fix remaining nonmatchings --- src/pokemon_summary_screen.c | 1716 +++++++++++++++++------------------------- 1 file changed, 684 insertions(+), 1032 deletions(-) (limited to 'src') diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index ef55129f4..c47ddb14c 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -107,7 +107,7 @@ static EWRAM_DATA struct UnkSummaryStruct bool8 unk40EF; s16 unk40F0; u8 unk_filler4[6]; -} *gUnknown_0203CF1C = NULL; +} *pssData = NULL; EWRAM_DATA u8 gUnknown_0203CF20 = 0; static EWRAM_DATA u8 gUnknown_0203CF21 = 0; static EWRAM_DATA u8 gFiller_0203CF22[2] = {0}; @@ -131,123 +131,123 @@ bool8 sub_81B1250(void); static bool8 SummaryScreen_LoadGraphics(void); static void SummaryScreen_LoadingCB2(void); static void InitBGs(void); -u8 sub_81BFEB0(void); -void CopyMonToSummaryStruct(struct Pokemon* a); -bool8 ExtractMonDataToSummaryStruct(struct Pokemon* a); -void sub_81C0348(void); -void sub_81C0484(u8 taskId); -void sub_81C0510(u8 taskId); -void sub_81C0604(u8 taskId, s8 a); -void sub_81C0704(u8 taskId); -s8 sub_81C08F8(s8 a); -s8 sub_81C09B4(s8 a); -bool8 sub_81C0A50(struct Pokemon* mon); -void sub_81C0A8C(u8 taskId, s8 a); -void sub_81C0B8C(u8 taskId); -void sub_81C0C68(u8 taskId); -void sub_81C0CC4(u8 taskId); -void sub_81C0D44(u8 taskId); -void sub_81C0E24(void); -void sub_81C0E48(u8 taskId); -void sub_81C0F44(u8 taskId); -bool8 sub_81C1040(void); -void sub_81C1070(s16* a, s8 b, u8* c); -void sub_81C11F4(u8 a); -void sub_81C129C(u8 a); -void sub_81C12E4(u8 taskId); -void sub_81C13B0(u8 taskId, bool8 b); -void sub_81C14BC(struct Pokemon *mon, u8 a, u8 b); -void sub_81C15EC(struct BoxPokemon *mon, u8 a, u8 b); -void sub_81C171C(u8 taskId); -void sub_81C174C(u8 taskId); -bool8 sub_81C18A8(void); -void sub_81C18F4(u8 a); -void sub_81C1940(u8 taskId); -void sub_81C1BA0(void); -void sub_81C1DA4(u16 a, s16 b); -void sub_81C1E20(u8 taskId); -void sub_81C1EFC(u16 a, s16 b, u16 c); -void sub_81C1F80(u8 taskId); -void sub_81C2074(u16 a, s16 b); -void sub_81C20F0(u8 taskId); -void sub_81C2194(u16 *a, u16 b, u8 c); -void sub_81C2228(struct Pokemon* mon); -void sub_81C22CC(struct Pokemon* mon); -void sub_81C240C(u16 a); -void sub_81C2524(void); -void sub_81C2554(void); -void sub_81C25E8(void); -void sub_81C2628(void); -void sub_81C2794(void); -void sub_81C27DC(struct Pokemon *mon, u16 a); -static void PrintPageNamesAndStatsPage(void); -void sub_81C2AFC(u8 a); -void sub_81C2C38(u8 a); -void SummaryScreen_RemoveWindowByIndex(u8 a); -void sub_81C2D9C(u8 a); -void sub_81C2DE4(u8 a); -void sub_81C2E00(void); -void sub_81C2E40(u8 taskId); -void PrintMonOTName(void); -void PrintMonOTID(void); -void PrintMonAbilityName(void); -void PrintMonAbilityDescription(void); -void BufferMonTrainerMemo(void); -void PrintMonTrainerMemo(void); -void BufferNatureString(void); -void GetMetLevelString(u8 *a); -bool8 DoesMonOTMatchOwner(void); -bool8 MonCameFromGBAGames(void); -bool8 IsInGamePartnerMon(void); -void PrintEggOTName(void); -void PrintEggOTID(void); -void PrintEggState(void); -void PrintEggMemo(void); -void sub_81C3554(u8 taskId); -void PrintHeldItemName(void); -void sub_81C3530(void); -void PrintRibbonCount(void); -void BufferLeftColumnStats(void); -void PrintLeftColumnStats(void); -void BufferRightColumnStats(void); -void PrintRightColumnStats(void); -void PrintExpPointsNextLevel(void); -void sub_81C3984(void); -void sub_81C39F0(u8 taskId); -void PrintMoveNameAndPP(u8 a); -void sub_81C3D08(void); -void sub_81C3D54(u8 taskId); -void PrintContestMoveDescription(u8 a); -void PrintMoveDetails(u16 a); -void PrintNewMoveDetailsOrCancelText(void); -void sub_81C4064(void); -void sub_81C40A0(u8 a, u8 b); -void sub_81C4154(void); -void sub_81C4190(void); -void sub_81C4204(u8 a, u8 b); -void sub_81C424C(void); -void sub_81C4280(void); -void sub_81C42C8(void); -void sub_81C43A0(void); -void sub_81C4420(void); -void sub_81C4484(void); -void sub_81C44F0(void); -void sub_81C4568(u8 a, u8 b); -u8 sub_81C45F4(struct Pokemon *a, s16 *b); -u8 sub_81C47B4(struct Pokemon *unused); -void sub_81C4844(struct Sprite *); +static bool8 SummaryScreen_DecompressGraphics(void); +static void CopyMonToSummaryStruct(struct Pokemon* a); +static bool8 ExtractMonDataToSummaryStruct(struct Pokemon* a); +static void sub_81C0348(void); +static void sub_81C0484(u8 taskId); +static void sub_81C0510(u8 taskId); +static void sub_81C0604(u8 taskId, s8 a); +static void sub_81C0704(u8 taskId); +static s8 sub_81C08F8(s8 a); +static s8 sub_81C09B4(s8 a); +static bool8 sub_81C0A50(struct Pokemon* mon); +static void sub_81C0A8C(u8 taskId, s8 a); +static void sub_81C0B8C(u8 taskId); +static void sub_81C0C68(u8 taskId); +static void sub_81C0CC4(u8 taskId); +static void sub_81C0D44(u8 taskId); +static void sub_81C0E24(void); +static void sub_81C0E48(u8 taskId); +static void sub_81C0F44(u8 taskId); +static bool8 sub_81C1040(void); +static void sub_81C1070(s16* a, s8 b, u8* c); +static void sub_81C11F4(u8 a); +static void sub_81C129C(u8 a); +static void sub_81C12E4(u8 taskId); +static void sub_81C13B0(u8 taskId, bool8 b); +static void SwapMonMoves(struct Pokemon *mon, u8 moveIndex1, u8 moveIndex2); +static void SwapBoxMonMoves(struct BoxPokemon *mon, u8 moveIndex1, u8 moveIndex2); +static void sub_81C171C(u8 taskId); +static void sub_81C174C(u8 taskId); +static bool8 sub_81C18A8(void); +static void sub_81C18F4(u8 a); +static void sub_81C1940(u8 taskId); +static void sub_81C1BA0(void); +static void sub_81C1DA4(u16 a, s16 b); +static void sub_81C1E20(u8 taskId); +static void sub_81C1EFC(u16 a, s16 b, u16 c); +static void sub_81C1F80(u8 taskId); +static void sub_81C2074(u16 a, s16 b); +static void sub_81C20F0(u8 taskId); +static void sub_81C2194(u16 *a, u16 b, u8 c); +static void sub_81C2228(struct Pokemon* mon); +static void sub_81C22CC(struct Pokemon* mon); +static void sub_81C240C(u16 a); +static void sub_81C2524(void); +static void sub_81C2554(void); +static void sub_81C25E8(void); +static void sub_81C2628(void); +static void sub_81C2794(void); +static void sub_81C27DC(struct Pokemon *mon, u16 a); +static void PrintPageNamesAndStatsPageToWindows(void); +static void sub_81C2AFC(u8 a); +static void sub_81C2C38(u8 a); +static void SummaryScreen_RemoveWindowByIndex(u8 a); +static void sub_81C2D9C(u8 a); +static void sub_81C2DE4(u8 a); +static void sub_81C2E00(void); +static void sub_81C2E40(u8 taskId); +static void PrintMonOTName(void); +static void PrintMonOTID(void); +static void PrintMonAbilityName(void); +static void PrintMonAbilityDescription(void); +static void BufferMonTrainerMemo(void); +static void PrintMonTrainerMemo(void); +static void BufferNatureString(void); +static void GetMetLevelString(u8 *a); +static bool8 DoesMonOTMatchOwner(void); +static bool8 DidMonComeFromGBAGames(void); +static bool8 IsInGamePartnerMon(void); +static void PrintEggOTName(void); +static void PrintEggOTID(void); +static void PrintEggState(void); +static void PrintEggMemo(void); +static void sub_81C3554(u8 taskId); +static void PrintHeldItemName(void); +static void sub_81C3530(void); +static void PrintRibbonCount(void); +static void BufferLeftColumnStats(void); +static void PrintLeftColumnStats(void); +static void BufferRightColumnStats(void); +static void PrintRightColumnStats(void); +static void PrintExpPointsNextLevel(void); +static void sub_81C3984(void); +static void sub_81C39F0(u8 taskId); +static void PrintMoveNameAndPP(u8 a); +static void sub_81C3D08(void); +static void sub_81C3D54(u8 taskId); +static void PrintContestMoveDescription(u8 a); +static void PrintMoveDetails(u16 a); +static void PrintNewMoveDetailsOrCancelText(void); +static void sub_81C4064(void); +static void sub_81C40A0(u8 a, u8 b); +static void PrintHMMovesCantBeForgotten(void); +static void sub_81C4190(void); +static void sub_81C4204(u8 a, u8 b); +static void sub_81C424C(void); +static void sub_81C4280(void); +static void sub_81C42C8(void); +static void sub_81C43A0(void); +static void sub_81C4420(void); +static void sub_81C4484(void); +static void sub_81C44F0(void); +static void sub_81C4568(u8 a, u8 b); +static u8 sub_81C45F4(struct Pokemon *a, s16 *b); +static u8 sub_81C47B4(struct Pokemon *unused); +static void sub_81C4844(struct Sprite *); void SummaryScreen_SetUnknownTaskId(u8 a); void SummaryScreen_DestroyUnknownTask(void); -void sub_81C48F0(void); -void CreateMonMarkingsSprite(struct Pokemon *mon); -void RemoveAndCreateMonMarkingsSprite(struct Pokemon *mon); -void CreateCaughtBallSprite(struct Pokemon *mon); -void CreateSetStatusSprite(void); -void sub_81C4AF8(u8 a); -void sub_81C4BE4(struct Sprite *sprite); -void sub_81C4C60(u8 a); -void sub_81C4C84(u8 a); -void sub_81C4D18(u8 a); +static void sub_81C48F0(void); +static void CreateMonMarkingsSprite(struct Pokemon *mon); +static void RemoveAndCreateMonMarkingsSprite(struct Pokemon *mon); +static void CreateCaughtBallSprite(struct Pokemon *mon); +static void CreateSetStatusSprite(void); +static void sub_81C4AF8(u8 a); +static void sub_81C4BE4(struct Sprite *sprite); +static void sub_81C4C60(u8 a); +static void sub_81C4C84(u8 a); +static void sub_81C4D18(u8 a); // const rom data #include "data/text/move_descriptions.h" @@ -711,38 +711,38 @@ static const u16 gUnknown_0861D120[] = INCBIN_U16("graphics/interface/summary_ma // code void ShowPokemonSummaryScreen(u8 mode, void *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void)) { - gUnknown_0203CF1C = AllocZeroed(sizeof(*gUnknown_0203CF1C)); - gUnknown_0203CF1C->mode = mode; - gUnknown_0203CF1C->monList.mons = mons; - gUnknown_0203CF1C->curMonIndex = monIndex; - gUnknown_0203CF1C->maxMonIndex = maxMonIndex; - gUnknown_0203CF1C->callback = callback; + pssData = AllocZeroed(sizeof(*pssData)); + pssData->mode = mode; + pssData->monList.mons = mons; + pssData->curMonIndex = monIndex; + pssData->maxMonIndex = maxMonIndex; + pssData->callback = callback; if (mode == PSS_MODE_UNK2) - gUnknown_0203CF1C->isBoxMon = TRUE; + pssData->isBoxMon = TRUE; else - gUnknown_0203CF1C->isBoxMon = FALSE; + pssData->isBoxMon = FALSE; switch (mode) { case PSS_MODE_NORMAL: case PSS_MODE_UNK2: - gUnknown_0203CF1C->minPageIndex = 0; - gUnknown_0203CF1C->maxPageIndex = 3; + pssData->minPageIndex = 0; + pssData->maxPageIndex = 3; break; case PSS_MODE_UNK1: - gUnknown_0203CF1C->minPageIndex = 0; - gUnknown_0203CF1C->maxPageIndex = 3; - gUnknown_0203CF1C->unk40C8 = TRUE; + pssData->minPageIndex = 0; + pssData->maxPageIndex = 3; + pssData->unk40C8 = TRUE; break; case PSS_MODE_SELECT_MOVE: - gUnknown_0203CF1C->minPageIndex = 2; - gUnknown_0203CF1C->maxPageIndex = 3; - gUnknown_0203CF1C->unk40C3 = TRUE; + pssData->minPageIndex = 2; + pssData->maxPageIndex = 3; + pssData->unk40C3 = TRUE; break; } - gUnknown_0203CF1C->currPageIndex = gUnknown_0203CF1C->minPageIndex; + pssData->currPageIndex = pssData->minPageIndex; SummaryScreen_SetUnknownTaskId(-1); if (gMonSpritesGfxPtr == 0) @@ -754,13 +754,13 @@ void ShowPokemonSummaryScreen(u8 mode, void *mons, u8 monIndex, u8 maxMonIndex, void ShowSelectMovePokemonSummaryScreen(struct Pokemon *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void), u16 newMove) { ShowPokemonSummaryScreen(PSS_MODE_SELECT_MOVE, mons, monIndex, maxMonIndex, callback); - gUnknown_0203CF1C->newMove = newMove; + pssData->newMove = newMove; } void ShowPokemonSummaryScreenSet40EF(u8 mode, struct BoxPokemon *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void)) { ShowPokemonSummaryScreen(mode, mons, monIndex, maxMonIndex, callback); - gUnknown_0203CF1C->unk40EF = TRUE; + pssData->unk40EF = TRUE; } static void SummaryScreen_MainCB2(void) @@ -813,11 +813,11 @@ static bool8 SummaryScreen_LoadGraphics(void) break; case 5: InitBGs(); - gUnknown_0203CF1C->unk40F0 = 0; + pssData->unk40F0 = 0; gMain.state++; break; case 6: - if (sub_81BFEB0() != FALSE) + if (SummaryScreen_DecompressGraphics() != FALSE) gMain.state++; break; case 7: @@ -829,12 +829,12 @@ static bool8 SummaryScreen_LoadGraphics(void) gMain.state++; break; case 9: - CopyMonToSummaryStruct(&gUnknown_0203CF1C->currentMon); - gUnknown_0203CF1C->unk40F0 = 0; + CopyMonToSummaryStruct(&pssData->currentMon); + pssData->unk40F0 = 0; gMain.state++; break; case 10: - if (ExtractMonDataToSummaryStruct(&gUnknown_0203CF1C->currentMon) != 0) + if (ExtractMonDataToSummaryStruct(&pssData->currentMon) != 0) gMain.state++; break; case 11: @@ -842,11 +842,11 @@ static bool8 SummaryScreen_LoadGraphics(void) gMain.state++; break; case 12: - PrintPageNamesAndStatsPage(); + PrintPageNamesAndStatsPageToWindows(); gMain.state++; break; case 13: - sub_81C2D9C(gUnknown_0203CF1C->currPageIndex); + sub_81C2D9C(pssData->currPageIndex); gMain.state++; break; case 14: @@ -854,29 +854,29 @@ static bool8 SummaryScreen_LoadGraphics(void) gMain.state++; break; case 15: - sub_81C2AFC(gUnknown_0203CF1C->currPageIndex); + sub_81C2AFC(pssData->currPageIndex); gMain.state++; break; case 16: sub_81C4190(); sub_81C42C8(); - gUnknown_0203CF1C->unk40F0 = 0; + pssData->unk40F0 = 0; gMain.state++; break; case 17: - gUnknown_0203CF1C->spriteIds[0] = sub_81C45F4(&gUnknown_0203CF1C->currentMon, &gUnknown_0203CF1C->unk40F0); - if (gUnknown_0203CF1C->spriteIds[0] != 0xFF) + pssData->spriteIds[0] = sub_81C45F4(&pssData->currentMon, &pssData->unk40F0); + if (pssData->spriteIds[0] != 0xFF) { - gUnknown_0203CF1C->unk40F0 = 0; + pssData->unk40F0 = 0; gMain.state++; } break; case 18: - CreateMonMarkingsSprite(&gUnknown_0203CF1C->currentMon); + CreateMonMarkingsSprite(&pssData->currentMon); gMain.state++; break; case 19: - CreateCaughtBallSprite(&gUnknown_0203CF1C->currentMon); + CreateCaughtBallSprite(&pssData->currentMon); gMain.state++; break; case 20: @@ -888,7 +888,7 @@ static bool8 SummaryScreen_LoadGraphics(void) gMain.state++; break; case 22: - if (gUnknown_0203CF1C->mode != PSS_MODE_SELECT_MOVE) + if (pssData->mode != PSS_MODE_SELECT_MOVE) CreateTask(sub_81C0510, 0); else CreateTask(sub_81C171C, 0); @@ -915,9 +915,9 @@ static void InitBGs(void) { ResetBgsAndClearDma3BusyFlags(0); InitBgsFromTemplates(0, gUnknown_0861CBB4, ARRAY_COUNT(gUnknown_0861CBB4)); - SetBgTilemapBuffer(1, gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0]); - SetBgTilemapBuffer(2, gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_SKILLS][0]); - SetBgTilemapBuffer(3, gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_INFO][0]); + SetBgTilemapBuffer(1, pssData->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0]); + SetBgTilemapBuffer(2, pssData->bgTilemapBuffers[PSS_PAGE_SKILLS][0]); + SetBgTilemapBuffer(3, pssData->bgTilemapBuffers[PSS_PAGE_INFO][0]); ResetAllBgsCoordinates(); schedule_bg_copy_tilemap_to_vram(1); schedule_bg_copy_tilemap_to_vram(2); @@ -930,90 +930,90 @@ static void InitBGs(void) ShowBg(3); } -bool8 sub_81BFEB0(void) +static bool8 SummaryScreen_DecompressGraphics(void) { - switch (gUnknown_0203CF1C->unk40F0) + switch (pssData->unk40F0) { case 0: reset_temp_tile_data_buffers(); decompress_and_copy_tile_data_to_vram(1, &gUnknown_08D97D0C, 0, 0, 0); - gUnknown_0203CF1C->unk40F0++; + pssData->unk40F0++; break; case 1: if (free_temp_tile_data_buffers_if_possible() != 1) { - LZDecompressWram(&gUnknown_08D9862C, gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_INFO][0]); - gUnknown_0203CF1C->unk40F0++; + LZDecompressWram(&gUnknown_08D9862C, pssData->bgTilemapBuffers[PSS_PAGE_INFO][0]); + pssData->unk40F0++; } break; case 2: - LZDecompressWram(&gUnknown_08D98CC8, gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_INFO][1]); - gUnknown_0203CF1C->unk40F0++; + LZDecompressWram(&gUnknown_08D98CC8, pssData->bgTilemapBuffers[PSS_PAGE_INFO][1]); + pssData->unk40F0++; break; case 3: - LZDecompressWram(&gUnknown_08D987FC, gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_SKILLS][1]); - gUnknown_0203CF1C->unk40F0++; + LZDecompressWram(&gUnknown_08D987FC, pssData->bgTilemapBuffers[PSS_PAGE_SKILLS][1]); + pssData->unk40F0++; break; case 4: - LZDecompressWram(&gUnknown_08D9898C, gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][1]); - gUnknown_0203CF1C->unk40F0++; + LZDecompressWram(&gUnknown_08D9898C, pssData->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][1]); + pssData->unk40F0++; break; case 5: - LZDecompressWram(&gUnknown_08D98B28, gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][1]); - gUnknown_0203CF1C->unk40F0++; + LZDecompressWram(&gUnknown_08D98B28, pssData->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][1]); + pssData->unk40F0++; break; case 6: LoadCompressedPalette(&gUnknown_08D9853C, 0, 0x100); LoadPalette(&gUnknown_08D85620, 0x81, 0x1E); - gUnknown_0203CF1C->unk40F0++; + pssData->unk40F0++; break; case 7: LoadCompressedObjectPic(&gUnknown_0861CFBC); - gUnknown_0203CF1C->unk40F0++; + pssData->unk40F0++; break; case 8: LoadCompressedObjectPic(&gUnknown_0861D074); - gUnknown_0203CF1C->unk40F0++; + pssData->unk40F0++; break; case 9: LoadCompressedObjectPic(&gUnknown_0861D0F8); - gUnknown_0203CF1C->unk40F0++; + pssData->unk40F0++; break; case 10: LoadCompressedObjectPalette(&gUnknown_0861D100); - gUnknown_0203CF1C->unk40F0++; + pssData->unk40F0++; break; case 11: LoadCompressedObjectPalette(&gUnknown_0861D07C); - gUnknown_0203CF1C->unk40F0++; + pssData->unk40F0++; break; case 12: LoadCompressedPalette(&gMoveTypes_Pal, 0x1D0, 0x60); - gUnknown_0203CF1C->unk40F0 = 0; + pssData->unk40F0 = 0; return TRUE; } return FALSE; } -void CopyMonToSummaryStruct(struct Pokemon *mon) +static void CopyMonToSummaryStruct(struct Pokemon *mon) { - if (!gUnknown_0203CF1C->isBoxMon) + if (!pssData->isBoxMon) { - struct Pokemon *partyMon = gUnknown_0203CF1C->monList.mons; - *mon = partyMon[gUnknown_0203CF1C->curMonIndex]; + struct Pokemon *partyMon = pssData->monList.mons; + *mon = partyMon[pssData->curMonIndex]; } else { - struct BoxPokemon *boxMon = gUnknown_0203CF1C->monList.boxMons; - BoxMonToMon(&boxMon[gUnknown_0203CF1C->curMonIndex], mon); + struct BoxPokemon *boxMon = pssData->monList.boxMons; + BoxMonToMon(&boxMon[pssData->curMonIndex], mon); } } -bool8 ExtractMonDataToSummaryStruct(struct Pokemon *a) +static bool8 ExtractMonDataToSummaryStruct(struct Pokemon *a) { u32 i; - struct PokeSummary *sum = &gUnknown_0203CF1C->summary; - switch (gUnknown_0203CF1C->unk40F0) + struct PokeSummary *sum = &pssData->summary; + switch (pssData->unk40F0) { case 0: sum->species = GetMonData(a, MON_DATA_SPECIES); @@ -1040,7 +1040,7 @@ bool8 ExtractMonDataToSummaryStruct(struct Pokemon *a) sum->ppBonuses = GetMonData(a, MON_DATA_PP_BONUSES); break; case 2: - if (gUnknown_0203CF1C->monList.mons == gPlayerParty || gUnknown_0203CF1C->mode == PSS_MODE_UNK2 || gUnknown_0203CF1C->unk40EF == TRUE) + if (pssData->monList.mons == gPlayerParty || pssData->mode == PSS_MODE_UNK2 || pssData->unk40EF == TRUE) { sum->nature = GetNature(a); sum->currentHP = GetMonData(a, MON_DATA_HP); @@ -1078,59 +1078,59 @@ bool8 ExtractMonDataToSummaryStruct(struct Pokemon *a) sum->ribbonCount = GetMonData(a, MON_DATA_RIBBON_COUNT); return TRUE; } - gUnknown_0203CF1C->unk40F0++; + pssData->unk40F0++; return FALSE; } -void sub_81C0348(void) +static void sub_81C0348(void) { - if (gUnknown_0203CF1C->currPageIndex != PSS_PAGE_BATTLE_MOVES && gUnknown_0203CF1C->currPageIndex != PSS_PAGE_CONTEST_MOVES) + if (pssData->currPageIndex != PSS_PAGE_BATTLE_MOVES && pssData->currPageIndex != PSS_PAGE_CONTEST_MOVES) { sub_81C1DA4(0, 255); sub_81C1EFC(0, 255, 0); } else { - sub_81C240C(gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->firstMoveIndex]); - sub_81C2194(gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0], 3, 0); - sub_81C2194(gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0], 1, 0); - SetBgTilemapBuffer(1, gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0]); - SetBgTilemapBuffer(2, gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0]); + sub_81C240C(pssData->summary.moves[pssData->firstMoveIndex]); + sub_81C2194(pssData->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0], 3, 0); + sub_81C2194(pssData->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0], 1, 0); + SetBgTilemapBuffer(1, pssData->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0]); + SetBgTilemapBuffer(2, pssData->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0]); ChangeBgX(2, 0x10000, 1); ClearWindowTilemap(19); ClearWindowTilemap(13); } - if (gUnknown_0203CF1C->summary.unk7 == 0) + if (pssData->summary.unk7 == 0) { sub_81C2074(0, 0xFF); } else { - if (gUnknown_0203CF1C->currPageIndex != PSS_PAGE_BATTLE_MOVES && gUnknown_0203CF1C->currPageIndex != PSS_PAGE_CONTEST_MOVES) + if (pssData->currPageIndex != PSS_PAGE_BATTLE_MOVES && pssData->currPageIndex != PSS_PAGE_CONTEST_MOVES) PutWindowTilemap(13); } sub_81C2524(); - sub_81C2228(&gUnknown_0203CF1C->currentMon); + sub_81C2228(&pssData->currentMon); } -void sub_81C0434(void) +static void sub_81C0434(void) { FreeAllWindowBuffers(); - Free(gUnknown_0203CF1C); + Free(pssData); } -void sub_81C044C(u8 taskId) +static void sub_81C044C(u8 taskId) { BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); gTasks[taskId].func = sub_81C0484; } -void sub_81C0484(u8 taskId) +static void sub_81C0484(u8 taskId) { - if (sub_81221EC() != 1 && !gPaletteFade.active) + if (sub_81221EC() != TRUE && !gPaletteFade.active) { - SetMainCallback2(gUnknown_0203CF1C->callback); - gUnknown_0203CF20 = gUnknown_0203CF1C->curMonIndex; + SetMainCallback2(pssData->callback); + gUnknown_0203CF20 = pssData->curMonIndex; SummaryScreen_DestroyUnknownTask(); ResetSpriteData(); FreeAllSpritePalettes(); @@ -1143,9 +1143,9 @@ void sub_81C0484(u8 taskId) } } -void sub_81C0510(u8 taskId) +static void sub_81C0510(u8 taskId) { - if (sub_81221EC() != 1 && !gPaletteFade.active) + if (sub_81221EC() != TRUE && !gPaletteFade.active) { if (gMain.newKeys & DPAD_UP) { @@ -1165,9 +1165,9 @@ void sub_81C0510(u8 taskId) } else if (gMain.newKeys & A_BUTTON) { - if (gUnknown_0203CF1C->currPageIndex != PSS_PAGE_SKILLS) + if (pssData->currPageIndex != PSS_PAGE_SKILLS) { - if (gUnknown_0203CF1C->currPageIndex == PSS_PAGE_INFO) + if (pssData->currPageIndex == PSS_PAGE_INFO) { sub_81C48F0(); PlaySE(SE_SELECT); @@ -1189,15 +1189,15 @@ void sub_81C0510(u8 taskId) } } -void sub_81C0604(u8 taskId, s8 a) +static void sub_81C0604(u8 taskId, s8 a) { s8 r4_2; - if (!gUnknown_0203CF1C->unk40C3) + if (!pssData->unk40C3) { - if (gUnknown_0203CF1C->isBoxMon == TRUE) + if (pssData->isBoxMon == TRUE) { - if (gUnknown_0203CF1C->currPageIndex != PSS_PAGE_INFO) + if (pssData->currPageIndex != PSS_PAGE_INFO) { if (a == 1) a = 0; @@ -1211,7 +1211,7 @@ void sub_81C0604(u8 taskId, s8 a) else a = 3; } - r4_2 = sub_80D214C(gUnknown_0203CF1C->monList.boxMons, gUnknown_0203CF1C->curMonIndex, gUnknown_0203CF1C->maxMonIndex, a); + r4_2 = sub_80D214C(pssData->monList.boxMons, pssData->curMonIndex, pssData->maxMonIndex, a); } else if (sub_81B1250() == 1) { @@ -1225,21 +1225,21 @@ void sub_81C0604(u8 taskId, s8 a) if (r4_2 != -1) { PlaySE(SE_SELECT); - if (gUnknown_0203CF1C->summary.unk7 != 0) + if (pssData->summary.unk7 != 0) { sub_81C4204(2, 1); ClearWindowTilemap(13); schedule_bg_copy_tilemap_to_vram(0); sub_81C2074(0, 2); } - gUnknown_0203CF1C->curMonIndex = r4_2; + pssData->curMonIndex = r4_2; gTasks[taskId].data[0] = 0; gTasks[taskId].func = sub_81C0704; } } } -void sub_81C0704(u8 taskId) +static void sub_81C0704(u8 taskId) { s16 *data = gTasks[taskId].data; @@ -1250,36 +1250,36 @@ void sub_81C0704(u8 taskId) break; case 1: SummaryScreen_DestroyUnknownTask(); - DestroySpriteAndFreeResources(&gSprites[gUnknown_0203CF1C->spriteIds[0]]); + DestroySpriteAndFreeResources(&gSprites[pssData->spriteIds[0]]); break; case 2: - DestroySpriteAndFreeResources(&gSprites[gUnknown_0203CF1C->spriteIds[1]]); + DestroySpriteAndFreeResources(&gSprites[pssData->spriteIds[1]]); break; case 3: - CopyMonToSummaryStruct(&gUnknown_0203CF1C->currentMon); - gUnknown_0203CF1C->unk40F0 = 0; + CopyMonToSummaryStruct(&pssData->currentMon); + pssData->unk40F0 = 0; break; case 4: - if (ExtractMonDataToSummaryStruct(&gUnknown_0203CF1C->currentMon) == FALSE) + if (ExtractMonDataToSummaryStruct(&pssData->currentMon) == FALSE) return; break; case 5: - RemoveAndCreateMonMarkingsSprite(&gUnknown_0203CF1C->currentMon); + RemoveAndCreateMonMarkingsSprite(&pssData->currentMon); break; case 6: - CreateCaughtBallSprite(&gUnknown_0203CF1C->currentMon); + CreateCaughtBallSprite(&pssData->currentMon); break; case 7: - if (gUnknown_0203CF1C->summary.unk7) + if (pssData->summary.unk7) sub_81C2074(10, -2); - sub_81C2228(&gUnknown_0203CF1C->currentMon); + sub_81C2228(&pssData->currentMon); data[1] = 0; break; case 8: - gUnknown_0203CF1C->spriteIds[0] = sub_81C45F4(&gUnknown_0203CF1C->currentMon, &data[1]); - if (gUnknown_0203CF1C->spriteIds[0] == 0xFF) + pssData->spriteIds[0] = sub_81C45F4(&pssData->currentMon, &data[1]); + if (pssData->spriteIds[0] == 0xFF) return; - gSprites[gUnknown_0203CF1C->spriteIds[0]].data[2] = 1; + gSprites[pssData->spriteIds[0]].data[2] = 1; sub_81C0E24(); data[1] = 0; break; @@ -1290,11 +1290,11 @@ void sub_81C0704(u8 taskId) sub_81C25E8(); break; case 11: - sub_81C2D9C(gUnknown_0203CF1C->currPageIndex); + sub_81C2D9C(pssData->currPageIndex); sub_81C2524(); break; case 12: - gSprites[gUnknown_0203CF1C->spriteIds[0]].data[2] = 0; + gSprites[pssData->spriteIds[0]].data[2] = 0; break; default: if (sub_81221EC() == 0 && FuncIsActiveTask(sub_81C20F0) == 0) @@ -1307,42 +1307,42 @@ void sub_81C0704(u8 taskId) data[0]++; } -s8 sub_81C08F8(s8 a) +static s8 sub_81C08F8(s8 a) { - struct Pokemon *mon = gUnknown_0203CF1C->monList.mons; + struct Pokemon *mon = pssData->monList.mons; - if (gUnknown_0203CF1C->currPageIndex == PSS_PAGE_INFO) + if (pssData->currPageIndex == PSS_PAGE_INFO) { - if (a == -1 && gUnknown_0203CF1C->curMonIndex == 0) + if (a == -1 && pssData->curMonIndex == 0) return -1; - else if (a == 1 && gUnknown_0203CF1C->curMonIndex >= gUnknown_0203CF1C->maxMonIndex) + else if (a == 1 && pssData->curMonIndex >= pssData->maxMonIndex) return -1; else - return gUnknown_0203CF1C->curMonIndex + a; + return pssData->curMonIndex + a; } else { - s8 index = gUnknown_0203CF1C->curMonIndex; + s8 index = pssData->curMonIndex; do { index += a; - if (index < 0 || index > gUnknown_0203CF1C->maxMonIndex) + if (index < 0 || index > pssData->maxMonIndex) return -1; } while (GetMonData(&mon[index], MON_DATA_IS_EGG) != 0); return index; } } -s8 sub_81C09B4(s8 a) +static s8 sub_81C09B4(s8 a) { - struct Pokemon *mon = gUnknown_0203CF1C->monList.mons; + struct Pokemon *mon = pssData->monList.mons; s8 r5 = 0; u8 i; for (i = 0; i < 6; i++) { - if (gUnknown_0861CC1C[i] == gUnknown_0203CF1C->curMonIndex) + if (gUnknown_0861CC1C[i] == pssData->curMonIndex) { r5 = i; break; @@ -1363,46 +1363,46 @@ s8 sub_81C09B4(s8 a) } } -bool8 sub_81C0A50(struct Pokemon* mon) +static bool8 sub_81C0A50(struct Pokemon* mon) { - if (GetMonData(mon, MON_DATA_SPECIES) == 0) + if (GetMonData(mon, MON_DATA_SPECIES) == SPECIES_NONE) return FALSE; - else if (gUnknown_0203CF1C->curMonIndex != 0 || GetMonData(mon, MON_DATA_IS_EGG) == 0) + else if (pssData->curMonIndex != 0 || GetMonData(mon, MON_DATA_IS_EGG) == 0) return TRUE; else return FALSE; } -void sub_81C0A8C(u8 taskId, s8 b) +static void sub_81C0A8C(u8 taskId, s8 b) { - struct PokeSummary *summary = &gUnknown_0203CF1C->summary; + struct PokeSummary *summary = &pssData->summary; s16 *data = gTasks[taskId].data; if (summary->isEgg) return; - else if (b == -1 && gUnknown_0203CF1C->currPageIndex == gUnknown_0203CF1C->minPageIndex) + else if (b == -1 && pssData->currPageIndex == pssData->minPageIndex) return; - else if (b == 1 && gUnknown_0203CF1C->currPageIndex == gUnknown_0203CF1C->maxPageIndex) + else if (b == 1 && pssData->currPageIndex == pssData->maxPageIndex) return; PlaySE(SE_SELECT); - sub_81C2C38(gUnknown_0203CF1C->currPageIndex); - gUnknown_0203CF1C->currPageIndex += b; + sub_81C2C38(pssData->currPageIndex); + pssData->currPageIndex += b; data[0] = 0; if (b == 1) SetTaskFuncWithFollowupFunc(taskId, sub_81C0B8C, gTasks[taskId].func); else SetTaskFuncWithFollowupFunc(taskId, sub_81C0CC4, gTasks[taskId].func); - sub_81C2DE4(gUnknown_0203CF1C->currPageIndex); + sub_81C2DE4(pssData->currPageIndex); sub_81C424C(); } -void sub_81C0B8C(u8 taskId) +static void sub_81C0B8C(u8 taskId) { s16 *data = gTasks[taskId].data; if (data[0] == 0) { - if (gUnknown_0203CF1C->unk40C9 == 0) + if (pssData->unk40C9 == 0) { data[1] = 1; SetBgAttribute(1, 7, 1); @@ -1417,7 +1417,7 @@ void sub_81C0B8C(u8 taskId) schedule_bg_copy_tilemap_to_vram(2); } ChangeBgX(data[1], 0, 0); - SetBgTilemapBuffer(data[1], gUnknown_0203CF1C->bgTilemapBuffers[gUnknown_0203CF1C->currPageIndex][0]); + SetBgTilemapBuffer(data[1], pssData->bgTilemapBuffers[pssData->currPageIndex][0]); ShowBg(1); ShowBg(2); } @@ -1427,25 +1427,25 @@ void sub_81C0B8C(u8 taskId) gTasks[taskId].func = sub_81C0C68; } -void sub_81C0C68(u8 taskId) +static void sub_81C0C68(u8 taskId) { s16 *data = gTasks[taskId].data; - gUnknown_0203CF1C->unk40C9 ^= 1; + pssData->unk40C9 ^= 1; data[1] = 0; data[0] = 0; sub_81C1BA0(); - sub_81C2AFC(gUnknown_0203CF1C->currPageIndex); + sub_81C2AFC(pssData->currPageIndex); sub_81C4280(); sub_81C0E24(); SwitchTaskToFollowupFunc(taskId); } -void sub_81C0CC4(u8 taskId) +static void sub_81C0CC4(u8 taskId) { s16 *data = gTasks[taskId].data; if (data[0] == 0) { - if (gUnknown_0203CF1C->unk40C9 == 0) + if (pssData->unk40C9 == 0) data[1] = 2; else data[1] = 1; @@ -1457,10 +1457,10 @@ void sub_81C0CC4(u8 taskId) gTasks[taskId].func = sub_81C0D44; } -void sub_81C0D44(u8 taskId) +static void sub_81C0D44(u8 taskId) { s16 *data = gTasks[taskId].data; - if (gUnknown_0203CF1C->unk40C9 == 0) + if (pssData->unk40C9 == 0) { SetBgAttribute(1, 7, 1); SetBgAttribute(2, 7, 2); @@ -1472,46 +1472,46 @@ void sub_81C0D44(u8 taskId) SetBgAttribute(1, 7, 2); schedule_bg_copy_tilemap_to_vram(1); } - if (gUnknown_0203CF1C->currPageIndex > 1) + if (pssData->currPageIndex > 1) { - SetBgTilemapBuffer(data[1], (u8*)gUnknown_0203CF1C + ((gUnknown_0203CF1C->currPageIndex << 12) + 0xFFFFF0BC)); + SetBgTilemapBuffer(data[1], (u8*)pssData + ((pssData->currPageIndex << 12) + 0xFFFFF0BC)); ChangeBgX(data[1], 0x10000, 0); } ShowBg(1); ShowBg(2); - gUnknown_0203CF1C->unk40C9 ^= 1; + pssData->unk40C9 ^= 1; data[1] = 0; data[0] = 0; sub_81C1BA0(); - sub_81C2AFC(gUnknown_0203CF1C->currPageIndex); + sub_81C2AFC(pssData->currPageIndex); sub_81C4280(); sub_81C0E24(); SwitchTaskToFollowupFunc(taskId); } -void sub_81C0E24(void) +static void sub_81C0E24(void) { - if (gUnknown_0203CF1C->currPageIndex == 1) - sub_81C22CC(&gUnknown_0203CF1C->currentMon); + if (pssData->currPageIndex == 1) + sub_81C22CC(&pssData->currentMon); } -void sub_81C0E48(u8 taskId) +static void sub_81C0E48(u8 taskId) { u16 move; - gUnknown_0203CF1C->firstMoveIndex = 0; - move = gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->firstMoveIndex]; + pssData->firstMoveIndex = 0; + move = pssData->summary.moves[pssData->firstMoveIndex]; ClearWindowTilemap(0x13); - if (gSprites[gUnknown_0203CF1C->spriteIds[2]].invisible == 0) + if (gSprites[pssData->spriteIds[2]].invisible == 0) ClearWindowTilemap(0xD); sub_81C1DA4(9, -3); sub_81C1EFC(9, -3, move); - if (!gUnknown_0203CF1C->unk40C8) + if (!pssData->unk40C8) { ClearWindowTilemap(5); PutWindowTilemap(6); } - sub_81C2194(gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0], 3, 0); - sub_81C2194(gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0], 1, 0); + sub_81C2194(pssData->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0], 3, 0); + sub_81C2194(pssData->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0], 1, 0); PrintMoveDetails(move); PrintNewMoveDetailsOrCancelText(); sub_81C44F0(); @@ -1522,7 +1522,7 @@ void sub_81C0E48(u8 taskId) gTasks[taskId].func = sub_81C0F44; } -void sub_81C0F44(u8 taskId) +static void sub_81C0F44(u8 taskId) { u8 id = taskId; s16 *data = gTasks[taskId].data; @@ -1532,17 +1532,17 @@ void sub_81C0F44(u8 taskId) if (gMain.newKeys & DPAD_UP) { data[0] = 4; - sub_81C1070(data, -1, &gUnknown_0203CF1C->firstMoveIndex); + sub_81C1070(data, -1, &pssData->firstMoveIndex); } else if (gMain.newKeys & DPAD_DOWN) { data[0] = 4; - sub_81C1070(data, 1, &gUnknown_0203CF1C->firstMoveIndex); + sub_81C1070(data, 1, &pssData->firstMoveIndex); } else if (gMain.newKeys & A_BUTTON) { - if (gUnknown_0203CF1C->unk40C8 == TRUE - || (gUnknown_0203CF1C->newMove == MOVE_NONE && gUnknown_0203CF1C->firstMoveIndex == MAX_MON_MOVES)) + if (pssData->unk40C8 == TRUE + || (pssData->newMove == MOVE_NONE && pssData->firstMoveIndex == MAX_MON_MOVES)) { PlaySE(SE_SELECT); sub_81C11F4(taskId); @@ -1565,18 +1565,18 @@ void sub_81C0F44(u8 taskId) } } -bool8 sub_81C1040(void) +static bool8 sub_81C1040(void) { u8 i; for (i = 1; i < 4; i++) { - if (gUnknown_0203CF1C->summary.moves[i] != 0) + if (pssData->summary.moves[i] != 0) return TRUE; } return FALSE; } -void sub_81C1070(s16 *a, s8 b, u8 *c) +static void sub_81C1070(s16 *a, s8 b, u8 *c) { s8 i; s8 moveIndex; @@ -1593,10 +1593,10 @@ void sub_81C1070(s16 *a, s8 b, u8 *c) moveIndex = a[0]; if (moveIndex == 4) { - move = gUnknown_0203CF1C->newMove; + move = pssData->newMove; break; } - move = gUnknown_0203CF1C->summary.moves[moveIndex]; + move = pssData->summary.moves[moveIndex]; if (move != 0) break; } @@ -1604,16 +1604,16 @@ void sub_81C1070(s16 *a, s8 b, u8 *c) schedule_bg_copy_tilemap_to_vram(1); schedule_bg_copy_tilemap_to_vram(2); PrintMoveDetails(move); - if ((*c == 4 && gUnknown_0203CF1C->newMove == MOVE_NONE) || a[1] == 1) + if ((*c == 4 && pssData->newMove == MOVE_NONE) || a[1] == 1) { ClearWindowTilemap(19); - if (!gSprites[gUnknown_0203CF1C->spriteIds[2]].invisible) + if (!gSprites[pssData->spriteIds[2]].invisible) ClearWindowTilemap(13); schedule_bg_copy_tilemap_to_vram(0); sub_81C1DA4(9, -3); sub_81C1EFC(9, -3, move); } - if (*c != 4 && moveIndex == 4 && gUnknown_0203CF1C->newMove == MOVE_NONE) + if (*c != 4 && moveIndex == 4 && pssData->newMove == MOVE_NONE) { ClearWindowTilemap(14); ClearWindowTilemap(15); @@ -1622,22 +1622,22 @@ void sub_81C1070(s16 *a, s8 b, u8 *c) sub_81C1EFC(0, 3, 0); } *c = moveIndex; - if (c == &gUnknown_0203CF1C->firstMoveIndex) + if (c == &pssData->firstMoveIndex) sub_81C4D18(8); else sub_81C4D18(18); } -void sub_81C11F4(u8 taskId) +static void sub_81C11F4(u8 taskId) { sub_81C4C60(8); ClearWindowTilemap(6); PutWindowTilemap(5); PrintMoveDetails(0); - sub_81C2194(gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0], 3, 1); - sub_81C2194(gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0], 1, 1); + sub_81C2194(pssData->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0], 3, 1); + sub_81C2194(pssData->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0], 1, 1); sub_81C4064(); - if (gUnknown_0203CF1C->firstMoveIndex != MAX_MON_MOVES) + if (pssData->firstMoveIndex != MAX_MON_MOVES) { ClearWindowTilemap(14); ClearWindowTilemap(15); @@ -1650,15 +1650,15 @@ void sub_81C11F4(u8 taskId) gTasks[taskId].func = sub_81C0510; } -void sub_81C129C(u8 taskId) +static void sub_81C129C(u8 taskId) { - gUnknown_0203CF1C->secondMoveIndex = gUnknown_0203CF1C->firstMoveIndex; + pssData->secondMoveIndex = pssData->firstMoveIndex; sub_81C4C84(1); sub_81C4AF8(18); gTasks[taskId].func = sub_81C12E4; } -void sub_81C12E4(u8 taskId) +static void sub_81C12E4(u8 taskId) { s16* data = gTasks[taskId].data; @@ -1667,16 +1667,16 @@ void sub_81C12E4(u8 taskId) if (gMain.newKeys & DPAD_UP) { data[0] = 3; - sub_81C1070(&data[0], -1, &gUnknown_0203CF1C->secondMoveIndex); + sub_81C1070(&data[0], -1, &pssData->secondMoveIndex); } else if (gMain.newKeys & DPAD_DOWN) { data[0] = 3; - sub_81C1070(&data[0], 1, &gUnknown_0203CF1C->secondMoveIndex); + sub_81C1070(&data[0], 1, &pssData->secondMoveIndex); } else if (gMain.newKeys & A_BUTTON) { - if (gUnknown_0203CF1C->firstMoveIndex == gUnknown_0203CF1C->secondMoveIndex) + if (pssData->firstMoveIndex == pssData->secondMoveIndex) { sub_81C13B0(taskId, 0); } @@ -1692,7 +1692,7 @@ void sub_81C12E4(u8 taskId) } } -void sub_81C13B0(u8 taskId, bool8 b) +static void sub_81C13B0(u8 taskId, bool8 b) { u16 move; @@ -1702,23 +1702,23 @@ void sub_81C13B0(u8 taskId, bool8 b) if (b == TRUE) { - if (!gUnknown_0203CF1C->isBoxMon) + if (!pssData->isBoxMon) { - struct Pokemon *why = gUnknown_0203CF1C->monList.mons; - sub_81C14BC(&why[gUnknown_0203CF1C->curMonIndex], gUnknown_0203CF1C->firstMoveIndex, gUnknown_0203CF1C->secondMoveIndex); + struct Pokemon *why = pssData->monList.mons; + SwapMonMoves(&why[pssData->curMonIndex], pssData->firstMoveIndex, pssData->secondMoveIndex); } else { - struct BoxPokemon *why = gUnknown_0203CF1C->monList.boxMons; - sub_81C15EC(&why[gUnknown_0203CF1C->curMonIndex], gUnknown_0203CF1C->firstMoveIndex, gUnknown_0203CF1C->secondMoveIndex); + struct BoxPokemon *why = pssData->monList.boxMons; + SwapBoxMonMoves(&why[pssData->curMonIndex], pssData->firstMoveIndex, pssData->secondMoveIndex); } - CopyMonToSummaryStruct(&gUnknown_0203CF1C->currentMon); - sub_81C40A0(gUnknown_0203CF1C->firstMoveIndex, gUnknown_0203CF1C->secondMoveIndex); - sub_81C4568(gUnknown_0203CF1C->firstMoveIndex, gUnknown_0203CF1C->secondMoveIndex); - gUnknown_0203CF1C->firstMoveIndex = gUnknown_0203CF1C->secondMoveIndex; + CopyMonToSummaryStruct(&pssData->currentMon); + sub_81C40A0(pssData->firstMoveIndex, pssData->secondMoveIndex); + sub_81C4568(pssData->firstMoveIndex, pssData->secondMoveIndex); + pssData->firstMoveIndex = pssData->secondMoveIndex; } - move = gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->firstMoveIndex]; + move = pssData->summary.moves[pssData->firstMoveIndex]; PrintMoveDetails(move); sub_81C240C(move); schedule_bg_copy_tilemap_to_vram(1); @@ -1726,437 +1726,84 @@ void sub_81C13B0(u8 taskId, bool8 b) gTasks[taskId].func = sub_81C0F44; } +static void SwapMonMoves(struct Pokemon *mon, u8 moveIndex1, u8 moveIndex2) +{ + struct PokeSummary* summary = &pssData->summary; + + u16 move1 = summary->moves[moveIndex1]; + u16 move2 = summary->moves[moveIndex2]; + u8 move1pp = summary->pp[moveIndex1]; + u8 move2pp = summary->pp[moveIndex2]; + u8 ppBonuses = summary->ppBonuses; + + // Calculate PP bonuses + u8 ppUpMask1 = gUnknown_08329D22[moveIndex1]; + u8 ppBonusMove1 = (ppBonuses & ppUpMask1) >> (moveIndex1 * 2); + u8 ppUpMask2 = gUnknown_08329D22[moveIndex2]; + u8 ppBonusMove2 = (ppBonuses & ppUpMask2) >> (moveIndex2 * 2); + ppBonuses &= ~ppUpMask1; + ppBonuses &= ~ppUpMask2; + ppBonuses |= (ppBonusMove1 << (moveIndex2 * 2)) + (ppBonusMove2 << (moveIndex1 * 2)); + + // Swap the moves + SetMonData(mon, MON_DATA_MOVE1 + moveIndex1, &move2); + SetMonData(mon, MON_DATA_MOVE1 + moveIndex2, &move1); + SetMonData(mon, MON_DATA_PP1 + moveIndex1, &move2pp); + SetMonData(mon, MON_DATA_PP1 + moveIndex2, &move1pp); + SetMonData(mon, MON_DATA_PP_BONUSES, &ppBonuses); + + summary->moves[moveIndex1] = move2; + summary->moves[moveIndex2] = move1; + + summary->pp[moveIndex1] = move2pp; + summary->pp[moveIndex2] = move1pp; + + summary->ppBonuses = ppBonuses; +} + +static void SwapBoxMonMoves(struct BoxPokemon *mon, u8 moveIndex1, u8 moveIndex2) +{ + struct PokeSummary* summary = &pssData->summary; + + u16 move1 = summary->moves[moveIndex1]; + u16 move2 = summary->moves[moveIndex2]; + u8 move1pp = summary->pp[moveIndex1]; + u8 move2pp = summary->pp[moveIndex2]; + u8 ppBonuses = summary->ppBonuses; -#ifdef NONMATCHING -void sub_81C14BC(struct Pokemon *mon, u8 swappingFromId, u8 swappingToId) -{ - u16 localMoveTo; - u16 localMoveFrom; - u8 localPpTo; - u8 localPpFrom; - u8 localPpBonuses; - u16* moveFromPtr; - u16* moveToPtr; - u8* ppFromPtr; - u8* ppToPtr; - u8* ppBonusesPtr; - - moveFromPtr = &gUnknown_0203CF1C->summary.moves[swappingFromId]; - localMoveFrom = *moveFromPtr; - - moveToPtr = &gUnknown_0203CF1C->summary.moves[swappingToId]; - localMoveTo = *moveToPtr; - - ppFromPtr = &gUnknown_0203CF1C->summary.pp[swappingFromId]; - localPpFrom = *ppFromPtr; - - ppToPtr = &gUnknown_0203CF1C->summary.pp[swappingToId]; - localPpTo = *ppToPtr; - - ppBonusesPtr = &gUnknown_0203CF1C->summary.ppBonuses; - localPpBonuses = *ppBonusesPtr; - -{ - u8 bitsFrom, bitsTo; - - bitsFrom = (localPpBonuses & gUnknown_08329D22[swappingFromId]) >> (swappingFromId << 1); - bitsTo = (localPpBonuses & gUnknown_08329D22[swappingToId]) >> (swappingToId << 1); - - - localPpBonuses &= ~(gUnknown_08329D22[swappingFromId]); - localPpBonuses &= ~(gUnknown_08329D22[swappingToId]); - - localPpBonuses |= ((bitsFrom << (swappingToId << 1)) + (bitsTo << (swappingToId << 1))); -} - - SetMonData(mon, swappingFromId + MON_DATA_MOVE1, &localMoveTo); - SetMonData(mon, swappingToId + MON_DATA_MOVE1, &localMoveFrom); - - SetMonData(mon, swappingFromId + MON_DATA_PP1, &localPpTo); - SetMonData(mon, swappingToId + MON_DATA_PP1, &localPpFrom); - - SetMonData(mon, MON_DATA_PP_BONUSES, &localPpBonuses); - - *moveFromPtr = localMoveTo; - *moveToPtr = localMoveFrom; - - *ppFromPtr = localPpTo; - *ppToPtr = localPpFrom; - - *ppBonusesPtr = localPpBonuses; -} -#else -NAKED -void sub_81C14BC(struct Pokemon *mon, u8 swappingFromId, u8 swappingToId) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0x28\n\ - adds r7, r0, 0\n\ - adds r4, r1, 0\n\ - adds r6, r2, 0\n\ - lsls r4, 24\n\ - lsrs r4, 24\n\ - lsls r6, 24\n\ - lsrs r6, 24\n\ - ldr r0, =gUnknown_0203CF1C\n\ - ldr r2, [r0]\n\ - lsls r0, r4, 1\n\ - mov r10, r0\n\ - adds r1, r2, 0\n\ - adds r1, 0x84\n\ - adds r0, r1, r0\n\ - str r0, [sp, 0x8]\n\ - ldrh r0, [r0]\n\ - mov r3, sp\n\ - adds r3, 0x2\n\ - str r3, [sp, 0x1C]\n\ - strh r0, [r3]\n\ - lsls r0, r6, 1\n\ - mov r9, r0\n\ - add r1, r9\n\ - str r1, [sp, 0xC]\n\ - ldrh r1, [r1]\n\ - mov r0, sp\n\ - strh r1, [r0]\n\ - adds r1, r2, 0\n\ - adds r1, 0x8C\n\ - adds r3, r1, r4\n\ - str r3, [sp, 0x10]\n\ - ldrb r0, [r3]\n\ - mov r3, sp\n\ - adds r3, 0x5\n\ - str r3, [sp, 0x24]\n\ - strb r0, [r3]\n\ - adds r1, r6\n\ - str r1, [sp, 0x14]\n\ - ldrb r0, [r1]\n\ - mov r1, sp\n\ - adds r1, 0x4\n\ - str r1, [sp, 0x20]\n\ - strb r0, [r1]\n\ - adds r2, 0xA4\n\ - str r2, [sp, 0x18]\n\ - ldrb r0, [r2]\n\ - mov r5, sp\n\ - adds r5, 0x6\n\ - strb r0, [r5]\n\ - ldr r1, =gUnknown_08329D22\n\ - adds r0, r4, r1\n\ - ldrb r0, [r0]\n\ - mov r8, r0\n\ - ldrb r0, [r5]\n\ - adds r2, r0, 0\n\ - mov r3, r8\n\ - ands r2, r3\n\ - mov r3, r10\n\ - asrs r2, r3\n\ - lsls r2, 24\n\ - lsrs r2, 24\n\ - adds r1, r6, r1\n\ - ldrb r1, [r1]\n\ - mov r12, r1\n\ - adds r1, r0, 0\n\ - mov r3, r12\n\ - ands r1, r3\n\ - mov r3, r9\n\ - asrs r1, r3\n\ - lsls r1, 24\n\ - lsrs r1, 24\n\ - mov r3, r8\n\ - bics r0, r3\n\ - strb r0, [r5]\n\ - ldrb r0, [r5]\n\ - mov r3, r12\n\ - bics r0, r3\n\ - strb r0, [r5]\n\ - mov r0, r9\n\ - lsls r2, r0\n\ - mov r3, r10\n\ - lsls r1, r3\n\ - adds r2, r1\n\ - ldrb r0, [r5]\n\ - orrs r0, r2\n\ - strb r0, [r5]\n\ - adds r1, r4, 0\n\ - adds r1, 0xD\n\ - adds r0, r7, 0\n\ - mov r2, sp\n\ - bl SetMonData\n\ - adds r1, r6, 0\n\ - adds r1, 0xD\n\ - adds r0, r7, 0\n\ - ldr r2, [sp, 0x1C]\n\ - bl SetMonData\n\ - adds r4, 0x11\n\ - adds r0, r7, 0\n\ - adds r1, r4, 0\n\ - ldr r2, [sp, 0x20]\n\ - bl SetMonData\n\ - adds r6, 0x11\n\ - adds r0, r7, 0\n\ - adds r1, r6, 0\n\ - ldr r2, [sp, 0x24]\n\ - bl SetMonData\n\ - adds r0, r7, 0\n\ - movs r1, 0x15\n\ - adds r2, r5, 0\n\ - bl SetMonData\n\ - mov r0, sp\n\ - ldrh r0, [r0]\n\ - ldr r1, [sp, 0x8]\n\ - strh r0, [r1]\n\ - ldr r3, [sp, 0x1C]\n\ - ldrh r0, [r3]\n\ - ldr r1, [sp, 0xC]\n\ - strh r0, [r1]\n\ - ldr r3, [sp, 0x20]\n\ - ldrb r0, [r3]\n\ - ldr r1, [sp, 0x10]\n\ - strb r0, [r1]\n\ - ldr r3, [sp, 0x24]\n\ - ldrb r0, [r3]\n\ - ldr r1, [sp, 0x14]\n\ - strb r0, [r1]\n\ - ldrb r0, [r5]\n\ - ldr r3, [sp, 0x18]\n\ - strb r0, [r3]\n\ - add sp, 0x28\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .pool\n\ - .syntax divided\n"); -} -#endif - -#ifdef NONMATCHING -void sub_81C15EC(struct BoxPokemon *mon, u8 swappingFromId, u8 swappingToId) -{ - u16 localMoveTo; - u16 localMoveFrom; - u8 localPpTo; - u8 localPpFrom; - u8 localPpBonuses; - u16* moveFromPtr; - u16* moveToPtr; - u8* ppFromPtr; - u8* ppToPtr; - u8* ppBonusesPtr; - - moveFromPtr = &gUnknown_0203CF1C->summary.moves[swappingFromId]; - localMoveFrom = *moveFromPtr; - - moveToPtr = &gUnknown_0203CF1C->summary.moves[swappingToId]; - localMoveTo = *moveToPtr; - - ppFromPtr = &gUnknown_0203CF1C->summary.pp[swappingFromId]; - localPpFrom = *ppFromPtr; - - ppToPtr = &gUnknown_0203CF1C->summary.pp[swappingToId]; - localPpTo = *ppToPtr; - - ppBonusesPtr = &gUnknown_0203CF1C->summary.ppBonuses; - localPpBonuses = *ppBonusesPtr; - -{ - u8 bitsFrom, bitsTo; - - bitsFrom = (localPpBonuses & gUnknown_08329D22[swappingFromId]) >> (swappingFromId << 1); - bitsTo = (localPpBonuses & gUnknown_08329D22[swappingToId]) >> (swappingToId << 1); - - - localPpBonuses &= ~(gUnknown_08329D22[swappingFromId]); - localPpBonuses &= ~(gUnknown_08329D22[swappingToId]); - - localPpBonuses |= ((bitsFrom << (swappingToId << 1)) + (bitsTo << (swappingToId << 1))); -} - - SetBoxMonData(mon, swappingFromId + MON_DATA_MOVE1, &localMoveTo); - SetBoxMonData(mon, swappingToId + MON_DATA_MOVE1, &localMoveFrom); - - SetBoxMonData(mon, swappingFromId + MON_DATA_PP1, &localPpTo); - SetBoxMonData(mon, swappingToId + MON_DATA_PP1, &localPpFrom); - - SetBoxMonData(mon, MON_DATA_PP_BONUSES, &localPpBonuses); - - *moveFromPtr = localMoveTo; - *moveToPtr = localMoveFrom; - - *ppFromPtr = localPpTo; - *ppToPtr = localPpFrom; - - *ppBonusesPtr = localPpBonuses; -} -#else -NAKED -void sub_81C15EC(struct BoxPokemon *mon, u8 swappingFromId, u8 swappingToId) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0x28\n\ - adds r7, r0, 0\n\ - adds r4, r1, 0\n\ - adds r6, r2, 0\n\ - lsls r4, 24\n\ - lsrs r4, 24\n\ - lsls r6, 24\n\ - lsrs r6, 24\n\ - ldr r0, =gUnknown_0203CF1C\n\ - ldr r2, [r0]\n\ - lsls r0, r4, 1\n\ - mov r10, r0\n\ - adds r1, r2, 0\n\ - adds r1, 0x84\n\ - adds r0, r1, r0\n\ - str r0, [sp, 0x8]\n\ - ldrh r0, [r0]\n\ - mov r3, sp\n\ - adds r3, 0x2\n\ - str r3, [sp, 0x1C]\n\ - strh r0, [r3]\n\ - lsls r0, r6, 1\n\ - mov r9, r0\n\ - add r1, r9\n\ - str r1, [sp, 0xC]\n\ - ldrh r1, [r1]\n\ - mov r0, sp\n\ - strh r1, [r0]\n\ - adds r1, r2, 0\n\ - adds r1, 0x8C\n\ - adds r3, r1, r4\n\ - str r3, [sp, 0x10]\n\ - ldrb r0, [r3]\n\ - mov r3, sp\n\ - adds r3, 0x5\n\ - str r3, [sp, 0x24]\n\ - strb r0, [r3]\n\ - adds r1, r6\n\ - str r1, [sp, 0x14]\n\ - ldrb r0, [r1]\n\ - mov r1, sp\n\ - adds r1, 0x4\n\ - str r1, [sp, 0x20]\n\ - strb r0, [r1]\n\ - adds r2, 0xA4\n\ - str r2, [sp, 0x18]\n\ - ldrb r0, [r2]\n\ - mov r5, sp\n\ - adds r5, 0x6\n\ - strb r0, [r5]\n\ - ldr r1, =gUnknown_08329D22\n\ - adds r0, r4, r1\n\ - ldrb r0, [r0]\n\ - mov r8, r0\n\ - ldrb r0, [r5]\n\ - adds r2, r0, 0\n\ - mov r3, r8\n\ - ands r2, r3\n\ - mov r3, r10\n\ - asrs r2, r3\n\ - lsls r2, 24\n\ - lsrs r2, 24\n\ - adds r1, r6, r1\n\ - ldrb r1, [r1]\n\ - mov r12, r1\n\ - adds r1, r0, 0\n\ - mov r3, r12\n\ - ands r1, r3\n\ - mov r3, r9\n\ - asrs r1, r3\n\ - lsls r1, 24\n\ - lsrs r1, 24\n\ - mov r3, r8\n\ - bics r0, r3\n\ - strb r0, [r5]\n\ - ldrb r0, [r5]\n\ - mov r3, r12\n\ - bics r0, r3\n\ - strb r0, [r5]\n\ - mov r0, r9\n\ - lsls r2, r0\n\ - mov r3, r10\n\ - lsls r1, r3\n\ - adds r2, r1\n\ - ldrb r0, [r5]\n\ - orrs r0, r2\n\ - strb r0, [r5]\n\ - adds r1, r4, 0\n\ - adds r1, 0xD\n\ - adds r0, r7, 0\n\ - mov r2, sp\n\ - bl SetBoxMonData\n\ - adds r1, r6, 0\n\ - adds r1, 0xD\n\ - adds r0, r7, 0\n\ - ldr r2, [sp, 0x1C]\n\ - bl SetBoxMonData\n\ - adds r4, 0x11\n\ - adds r0, r7, 0\n\ - adds r1, r4, 0\n\ - ldr r2, [sp, 0x20]\n\ - bl SetBoxMonData\n\ - adds r6, 0x11\n\ - adds r0, r7, 0\n\ - adds r1, r6, 0\n\ - ldr r2, [sp, 0x24]\n\ - bl SetBoxMonData\n\ - adds r0, r7, 0\n\ - movs r1, 0x15\n\ - adds r2, r5, 0\n\ - bl SetBoxMonData\n\ - mov r0, sp\n\ - ldrh r0, [r0]\n\ - ldr r1, [sp, 0x8]\n\ - strh r0, [r1]\n\ - ldr r3, [sp, 0x1C]\n\ - ldrh r0, [r3]\n\ - ldr r1, [sp, 0xC]\n\ - strh r0, [r1]\n\ - ldr r3, [sp, 0x20]\n\ - ldrb r0, [r3]\n\ - ldr r1, [sp, 0x10]\n\ - strb r0, [r1]\n\ - ldr r3, [sp, 0x24]\n\ - ldrb r0, [r3]\n\ - ldr r1, [sp, 0x14]\n\ - strb r0, [r1]\n\ - ldrb r0, [r5]\n\ - ldr r3, [sp, 0x18]\n\ - strb r0, [r3]\n\ - add sp, 0x28\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .pool\n\ - .syntax divided\n"); -} -#endif - -void sub_81C171C(u8 taskId) + // Calculate PP bonuses + u8 ppUpMask1 = gUnknown_08329D22[moveIndex1]; + u8 ppBonusMove1 = (ppBonuses & ppUpMask1) >> (moveIndex1 * 2); + u8 ppUpMask2 = gUnknown_08329D22[moveIndex2]; + u8 ppBonusMove2 = (ppBonuses & ppUpMask2) >> (moveIndex2 * 2); + ppBonuses &= ~ppUpMask1; + ppBonuses &= ~ppUpMask2; + ppBonuses |= (ppBonusMove1 << (moveIndex2 * 2)) + (ppBonusMove2 << (moveIndex1 * 2)); + + // Swap the moves + SetBoxMonData(mon, MON_DATA_MOVE1 + moveIndex1, &move2); + SetBoxMonData(mon, MON_DATA_MOVE1 + moveIndex2, &move1); + SetBoxMonData(mon, MON_DATA_PP1 + moveIndex1, &move2pp); + SetBoxMonData(mon, MON_DATA_PP1 + moveIndex2, &move1pp); + SetBoxMonData(mon, MON_DATA_PP_BONUSES, &ppBonuses); + + summary->moves[moveIndex1] = move2; + summary->moves[moveIndex2] = move1; + + summary->pp[moveIndex1] = move2pp; + summary->pp[moveIndex2] = move1pp; + + summary->ppBonuses = ppBonuses; +} + +static void sub_81C171C(u8 taskId) { sub_81C44F0(); sub_81C4AF8(8); gTasks[taskId].func = sub_81C174C; } -void sub_81C174C(u8 taskId) +static void sub_81C174C(u8 taskId) { s16* data = gTasks[taskId].data; @@ -2167,12 +1814,12 @@ void sub_81C174C(u8 taskId) if (gMain.newKeys & DPAD_UP) { data[0] = 4; - sub_81C1070(data, -1, &gUnknown_0203CF1C->firstMoveIndex); + sub_81C1070(data, -1, &pssData->firstMoveIndex); } else if (gMain.newKeys & DPAD_DOWN) { data[0] = 4; - sub_81C1070(data, 1, &gUnknown_0203CF1C->firstMoveIndex); + sub_81C1070(data, 1, &pssData->firstMoveIndex); } else if (gMain.newKeys & DPAD_LEFT || GetLRKeysState() == 1) { @@ -2188,7 +1835,7 @@ void sub_81C174C(u8 taskId) { sub_81C48F0(); PlaySE(SE_SELECT); - gUnknown_0203CF21 = gUnknown_0203CF1C->firstMoveIndex; + gUnknown_0203CF21 = pssData->firstMoveIndex; gSpecialVar_0x8005 = gUnknown_0203CF21; sub_81C044C(taskId); } @@ -2211,26 +1858,26 @@ void sub_81C174C(u8 taskId) } } -bool8 sub_81C18A8(void) +static bool8 sub_81C18A8(void) { - if (gUnknown_0203CF1C->firstMoveIndex == MAX_MON_MOVES || gUnknown_0203CF1C->newMove == MOVE_NONE || sub_81B6D14(gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->firstMoveIndex]) != 1) + if (pssData->firstMoveIndex == MAX_MON_MOVES || pssData->newMove == MOVE_NONE || sub_81B6D14(pssData->summary.moves[pssData->firstMoveIndex]) != 1) return TRUE; else return FALSE; } -void sub_81C18F4(u8 taskId) +static void sub_81C18F4(u8 taskId) { ClearWindowTilemap(14); ClearWindowTilemap(15); schedule_bg_copy_tilemap_to_vram(0); sub_81C1DA4(0, 3); sub_81C1EFC(0, 3, 0); - sub_81C4154(); + PrintHMMovesCantBeForgotten(); gTasks[taskId].func = sub_81C1940; } -void sub_81C1940(u8 taskId) +static void sub_81C1940(u8 taskId) { s16* data = gTasks[taskId].data; u16 move; @@ -2240,7 +1887,7 @@ void sub_81C1940(u8 taskId) { data[1] = 1; data[0] = 4; - sub_81C1070(&data[0], -1, &gUnknown_0203CF1C->firstMoveIndex); + sub_81C1070(&data[0], -1, &pssData->firstMoveIndex); data[1] = 0; gTasks[taskId].func = sub_81C174C; } @@ -2248,18 +1895,18 @@ void sub_81C1940(u8 taskId) { data[1] = 1; data[0] = 4; - sub_81C1070(&data[0], 1, &gUnknown_0203CF1C->firstMoveIndex); + sub_81C1070(&data[0], 1, &pssData->firstMoveIndex); data[1] = 0; gTasks[taskId].func = sub_81C174C; } else if (gMain.newKeys & DPAD_LEFT || GetLRKeysState() == 1) { - if (gUnknown_0203CF1C->currPageIndex != 2) + if (pssData->currPageIndex != 2) { ClearWindowTilemap(19); - if (!gSprites[gUnknown_0203CF1C->spriteIds[2]].invisible) + if (!gSprites[pssData->spriteIds[2]].invisible) ClearWindowTilemap(13); - move = gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->firstMoveIndex]; + move = pssData->summary.moves[pssData->firstMoveIndex]; gTasks[taskId].func = sub_81C174C; sub_81C0A8C(taskId, -1); sub_81C1DA4(9, -2); @@ -2268,12 +1915,12 @@ void sub_81C1940(u8 taskId) } else if (gMain.newKeys & DPAD_RIGHT || GetLRKeysState() == 2) { - if (gUnknown_0203CF1C->currPageIndex != 3) + if (pssData->currPageIndex != 3) { ClearWindowTilemap(19); - if (!gSprites[gUnknown_0203CF1C->spriteIds[2]].invisible) + if (!gSprites[pssData->spriteIds[2]].invisible) ClearWindowTilemap(13); - move = gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->firstMoveIndex]; + move = pssData->summary.moves[pssData->firstMoveIndex]; gTasks[taskId].func = sub_81C174C; sub_81C0A8C(taskId, 1); sub_81C1DA4(9, -2); @@ -2283,9 +1930,9 @@ void sub_81C1940(u8 taskId) else if (gMain.newKeys & (A_BUTTON | B_BUTTON)) { ClearWindowTilemap(19); - if (!gSprites[gUnknown_0203CF1C->spriteIds[2]].invisible) + if (!gSprites[pssData->spriteIds[2]].invisible) ClearWindowTilemap(13); - move = gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->firstMoveIndex]; + move = pssData->summary.moves[pssData->firstMoveIndex]; PrintMoveDetails(move); schedule_bg_copy_tilemap_to_vram(0); sub_81C1DA4(9, -3); @@ -2300,64 +1947,66 @@ u8 sub_81C1B94(void) return gUnknown_0203CF21; } -void sub_81C1BA0(void) +static void sub_81C1BA0(void) { u16 *alloced = Alloc(32); u8 i; + for (i = 0; i < 4; i++) { - u8 j = i << 1; - if (i < gUnknown_0203CF1C->minPageIndex) + u8 j = i * 2; + + if (i < pssData->minPageIndex) { - alloced[j+0] = 0x40; - alloced[j+1] = 0x40; - alloced[j+8] = 0x50; - alloced[j+9] = 0x50; + alloced[j + 0] = 0x40; + alloced[j + 1] = 0x40; + alloced[j + 8] = 0x50; + alloced[j + 9] = 0x50; } - else if (i > gUnknown_0203CF1C->maxPageIndex) + else if (i > pssData->maxPageIndex) { - alloced[j+0] = 0x4A; - alloced[j+1] = 0x4A; - alloced[j+8] = 0x5A; - alloced[j+9] = 0x5A; + alloced[j + 0] = 0x4A; + alloced[j + 1] = 0x4A; + alloced[j + 8] = 0x5A; + alloced[j + 9] = 0x5A; } - else if (i < gUnknown_0203CF1C->currPageIndex) + else if (i < pssData->currPageIndex) { - alloced[j+0] = 0x46; - alloced[j+1] = 0x47; - alloced[j+8] = 0x56; - alloced[j+9] = 0x57; + alloced[j + 0] = 0x46; + alloced[j + 1] = 0x47; + alloced[j + 8] = 0x56; + alloced[j + 9] = 0x57; } - else if (i == gUnknown_0203CF1C->currPageIndex) + else if (i == pssData->currPageIndex) { - if (i != gUnknown_0203CF1C->maxPageIndex) + if (i != pssData->maxPageIndex) { - alloced[j+0] = 0x41; - alloced[j+1] = 0x42; - alloced[j+8] = 0x51; - alloced[j+9] = 0x52; + alloced[j + 0] = 0x41; + alloced[j + 1] = 0x42; + alloced[j + 8] = 0x51; + alloced[j + 9] = 0x52; } else { - alloced[j+0] = 0x4B; - alloced[j+1] = 0x4C; - alloced[j+8] = 0x5B; - alloced[j+9] = 0x5C; + alloced[j + 0] = 0x4B; + alloced[j + 1] = 0x4C; + alloced[j + 8] = 0x5B; + alloced[j + 9] = 0x5C; } } - else if (i != gUnknown_0203CF1C->maxPageIndex) + else if (i != pssData->maxPageIndex) { - alloced[j+0] = 0x43; - alloced[j+1] = 0x44; - alloced[j+8] = 0x53; - alloced[j+9] = 0x54; + alloced[j + 0] = 0x43; + alloced[j + 1] = 0x44; + alloced[j + 8] = 0x53; + alloced[j + 9] = 0x54; } else { - alloced[j+0] = 0x48; - alloced[j+1] = 0x49; - alloced[j+8] = 0x58; - alloced[j+9] = 0x59; + alloced[j + 0] = 0x48; + alloced[j + 1] = 0x49; + alloced[j + 8] = 0x58; + alloced[j + 9] = 0x59; } } CopyToBgTilemapBufferRect_ChangePalette(3, alloced, 11, 0, 8, 2, 16); @@ -2365,7 +2014,7 @@ void sub_81C1BA0(void) Free(alloced); } -void sub_81C1CB0(const struct UnkStruct_61CC04 *unkStruct, u16 *dest, u8 c, bool8 d) +static void sub_81C1CB0(const struct UnkStruct_61CC04 *unkStruct, u16 *dest, u8 c, bool8 d) { u16 i; u16 *alloced = Alloc(unkStruct->field_6 * 2 * unkStruct->field_7); @@ -2394,13 +2043,13 @@ void sub_81C1CB0(const struct UnkStruct_61CC04 *unkStruct, u16 *dest, u8 c, bool Free(alloced); } -void sub_81C1DA4(u16 a, s16 b) +static void sub_81C1DA4(u16 a, s16 b) { if (b > gUnknown_0861CC04.field_6) b = gUnknown_0861CC04.field_6; if (b == 0 || b == gUnknown_0861CC04.field_6) { - sub_81C1CB0(&gUnknown_0861CC04, gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0], b, 1); + sub_81C1CB0(&gUnknown_0861CC04, pssData->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0], b, 1); } else { @@ -2414,7 +2063,7 @@ void sub_81C1DA4(u16 a, s16 b) } } -void sub_81C1E20(u8 taskId) +static void sub_81C1E20(u8 taskId) { s16 *data = gTasks[taskId].data; data[1] += data[0]; @@ -2426,17 +2075,17 @@ void sub_81C1E20(u8 taskId) { data[1] = gUnknown_0861CC04.field_6; } - sub_81C1CB0(&gUnknown_0861CC04, gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0], data[1], 1); + sub_81C1CB0(&gUnknown_0861CC04, pssData->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0], data[1], 1); if (data[1] <= 0 || data[1] >= gUnknown_0861CC04.field_6) { if (data[0] < 0) { - if (gUnknown_0203CF1C->currPageIndex == 2) + if (pssData->currPageIndex == 2) PutWindowTilemap(14); } else { - if (!gSprites[gUnknown_0203CF1C->spriteIds[2]].invisible) + if (!gSprites[pssData->spriteIds[2]].invisible) PutWindowTilemap(13); PutWindowTilemap(19); } @@ -2447,12 +2096,12 @@ void sub_81C1E20(u8 taskId) schedule_bg_copy_tilemap_to_vram(2); } -void sub_81C1EFC(u16 a, s16 b, u16 move) +static void sub_81C1EFC(u16 a, s16 b, u16 move) { if (b > gUnknown_0861CC10.field_6) b = gUnknown_0861CC10.field_6; if (b == 0 || b == gUnknown_0861CC10.field_6) - sub_81C1CB0(&gUnknown_0861CC10, gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0], b, 1); + sub_81C1CB0(&gUnknown_0861CC10, pssData->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0], b, 1); else { u8 taskId = FindTaskIdByFunc(sub_81C1F80); @@ -2464,7 +2113,7 @@ void sub_81C1EFC(u16 a, s16 b, u16 move) } } -void sub_81C1F80(u8 taskId) +static void sub_81C1F80(u8 taskId) { s16 *data = gTasks[taskId].data; data[1] += data[0]; @@ -2476,18 +2125,18 @@ void sub_81C1F80(u8 taskId) { data[1] = gUnknown_0861CC10.field_6; } - sub_81C1CB0(&gUnknown_0861CC10, gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0], data[1], 1); + sub_81C1CB0(&gUnknown_0861CC10, pssData->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0], data[1], 1); if (data[1] <= 0 || data[1] >= gUnknown_0861CC10.field_6) { if (data[0] < 0) { - if (gUnknown_0203CF1C->currPageIndex == 3 && FuncIsActiveTask(sub_81C0B8C) == 0) + if (pssData->currPageIndex == 3 && FuncIsActiveTask(sub_81C0B8C) == 0) PutWindowTilemap(15); sub_81C240C(data[2]); } else { - if (!gSprites[gUnknown_0203CF1C->spriteIds[2]].invisible) + if (!gSprites[pssData->spriteIds[2]].invisible) { PutWindowTilemap(13); } @@ -2500,14 +2149,14 @@ void sub_81C1F80(u8 taskId) schedule_bg_copy_tilemap_to_vram(2); } -void sub_81C2074(u16 a, s16 b) +static void sub_81C2074(u16 a, s16 b) { if (b > gUnknown_0861CBEC.field_6) b = gUnknown_0861CBEC.field_6; if (b == 0 || b == gUnknown_0861CBEC.field_6) { - sub_81C1CB0(&gUnknown_0861CBEC, gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_INFO][0], b, 0); - sub_81C1CB0(&gUnknown_0861CBF8, gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_INFO][0], b, 0); + sub_81C1CB0(&gUnknown_0861CBEC, pssData->bgTilemapBuffers[PSS_PAGE_INFO][0], b, 0); + sub_81C1CB0(&gUnknown_0861CBF8, pssData->bgTilemapBuffers[PSS_PAGE_INFO][0], b, 0); } else { @@ -2517,7 +2166,7 @@ void sub_81C2074(u16 a, s16 b) } } -void sub_81C20F0(u8 taskId) +static void sub_81C20F0(u8 taskId) { s16 *data = gTasks[taskId].data; data[1] += data[0]; @@ -2525,8 +2174,8 @@ void sub_81C20F0(u8 taskId) data[1] = 0; else if (data[1] > gUnknown_0861CBEC.field_6) data[1] = gUnknown_0861CBEC.field_6; - sub_81C1CB0(&gUnknown_0861CBEC, gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_INFO][0], data[1], 0); - sub_81C1CB0(&gUnknown_0861CBF8, gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_INFO][0], data[1], 0); + sub_81C1CB0(&gUnknown_0861CBEC, pssData->bgTilemapBuffers[PSS_PAGE_INFO][0], data[1], 0); + sub_81C1CB0(&gUnknown_0861CBF8, pssData->bgTilemapBuffers[PSS_PAGE_INFO][0], data[1], 0); schedule_bg_copy_tilemap_to_vram(3); if (data[1] <= 0 || data[1] >= gUnknown_0861CBEC.field_6) { @@ -2540,11 +2189,12 @@ void sub_81C20F0(u8 taskId) } } -void sub_81C2194(u16 *output, u16 palette, bool8 c) +static void sub_81C2194(u16 *output, u16 palette, bool8 c) { u16 i; u32 var; - palette <<= 12; + + palette *= 0x1000; var = 0x56A; if (c == 0) @@ -2567,22 +2217,22 @@ void sub_81C2194(u16 *output, u16 palette, bool8 c) } } -void sub_81C2228(struct Pokemon *mon) +static void sub_81C2228(struct Pokemon *mon) { if (!CheckPartyPokerus(mon, 0) && CheckPartyHasHadPokerus(mon, 0)) { - gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_INFO][0][0x223] = 0x2C; - gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_INFO][1][0x223] = 0x2C; + pssData->bgTilemapBuffers[PSS_PAGE_INFO][0][0x223] = 0x2C; + pssData->bgTilemapBuffers[PSS_PAGE_INFO][1][0x223] = 0x2C; } else { - gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_INFO][0][0x223] = 0x81A; - gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_INFO][1][0x223] = 0x81A; + pssData->bgTilemapBuffers[PSS_PAGE_INFO][0][0x223] = 0x81A; + pssData->bgTilemapBuffers[PSS_PAGE_INFO][1][0x223] = 0x81A; } schedule_bg_copy_tilemap_to_vram(3); } -void sub_81C228C(bool8 isMonShiny) +static void sub_81C228C(bool8 isMonShiny) { if (!isMonShiny) sub_8199C30(3, 1, 4, 8, 8, 0); @@ -2591,10 +2241,10 @@ void sub_81C228C(bool8 isMonShiny) schedule_bg_copy_tilemap_to_vram(3); } -void sub_81C22CC(struct Pokemon *unused) +static void sub_81C22CC(struct Pokemon *unused) { s64 r6r7; - struct PokeSummary *summary = &gUnknown_0203CF1C->summary; + struct PokeSummary *summary = &pssData->summary; u16 *r9; u8 i; @@ -2612,7 +2262,7 @@ void sub_81C22CC(struct Pokemon *unused) r6r7 = 0; } - r9 = &gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_SKILLS][1][0x255]; + r9 = &pssData->bgTilemapBuffers[PSS_PAGE_SKILLS][1][0x255]; for (i = 0; i < 8; i++) { if (r6r7 > 7) @@ -2624,15 +2274,15 @@ void sub_81C22CC(struct Pokemon *unused) r6r7 = 0; } - if (GetBgTilemapBuffer(1) == gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_SKILLS][0]) + if (GetBgTilemapBuffer(1) == pssData->bgTilemapBuffers[PSS_PAGE_SKILLS][0]) schedule_bg_copy_tilemap_to_vram(1); else schedule_bg_copy_tilemap_to_vram(2); } -void sub_81C240C(u16 move) +static void sub_81C240C(u16 move) { - u16 *tilemap = gUnknown_0203CF1C->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][1]; + u16 *tilemap = pssData->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][1]; u8 i; u8 effectValue; @@ -2674,15 +2324,15 @@ void sub_81C240C(u16 move) } } -void sub_81C2524(void) +static void sub_81C2524(void) { - if (gUnknown_0203CF1C->summary.isEgg) + if (pssData->summary.isEgg) ChangeBgX(3, 0x10000, 0); else ChangeBgX(3, 0, 0); } -void sub_81C2554(void) +static void sub_81C2554(void) { u8 i; InitWindows(gUnknown_0861CC24); @@ -2694,7 +2344,7 @@ void sub_81C2554(void) } for (i = 0; i < 8; i++) { - gUnknown_0203CF1C->windowIds[i] = 0xFF; + pssData->windowIds[i] = 0xFF; } } @@ -2703,23 +2353,23 @@ static void SummaryScreen_PrintTextOnWindow(u8 windowId, const u8 *string, u8 x, AddTextPrinterParameterized2(windowId, 1, x, y, 0, lineSpacing, sTextColors_861CD2C[colorId], 0, string); } -void sub_81C25E8(void) +static void sub_81C25E8(void) { FillWindowPixelBuffer(17, 0); FillWindowPixelBuffer(18, 0); FillWindowPixelBuffer(19, 0); - if (!gUnknown_0203CF1C->summary.isEgg) + if (!pssData->summary.isEgg) sub_81C2628(); else sub_81C2794(); schedule_bg_copy_tilemap_to_vram(0); } -void sub_81C2628(void) +static void sub_81C2628(void) { u8 strArray[16]; - struct Pokemon *mon = &gUnknown_0203CF1C->currentMon; - struct PokeSummary *summary = &gUnknown_0203CF1C->summary; + struct Pokemon *mon = &pssData->currentMon; + struct PokeSummary *summary = &pssData->summary; u16 dexNum = SpeciesToPokedexNum(summary->species); if (dexNum != 0xFFFF) { @@ -2760,38 +2410,38 @@ void sub_81C2628(void) PutWindowTilemap(19); } -void sub_81C2794(void) +static void sub_81C2794(void) { - GetMonNickname(&gUnknown_0203CF1C->currentMon, gStringVar1); + GetMonNickname(&pssData->currentMon, gStringVar1); SummaryScreen_PrintTextOnWindow(18, gStringVar1, 0, 1, 0, 1); PutWindowTilemap(18); ClearWindowTilemap(17); ClearWindowTilemap(19); } -void sub_81C27DC(struct Pokemon *mon, u16 a) +static void sub_81C27DC(struct Pokemon *mon, u16 species) { - if (a != SPECIES_NIDORAN_M && a != SPECIES_NIDORAN_F) + if (species != SPECIES_NIDORAN_M && species != SPECIES_NIDORAN_F) { u8 gender = GetMonGender(mon); switch (gender) { case MON_MALE: - SummaryScreen_PrintTextOnWindow(19, &gText_MaleSymbol[0], 57, 17, 0, 3); + SummaryScreen_PrintTextOnWindow(19, gText_MaleSymbol, 57, 17, 0, 3); break; case MON_FEMALE: - SummaryScreen_PrintTextOnWindow(19, &gText_FemaleSymbol[0], 57, 17, 0, 4); + SummaryScreen_PrintTextOnWindow(19, gText_FemaleSymbol, 57, 17, 0, 4); break; } } } -void PrintAOrBButtonIcon(u8 windowId, bool8 bButton, u32 x) +static void PrintAOrBButtonIcon(u8 windowId, bool8 bButton, u32 x) { BlitBitmapToWindow(windowId, (bButton) ? gUnknown_0861CDD3 : gUnknown_0861CDD3 - 0x80, x, 0, 16, 16); } -static void PrintPageNamesAndStatsPage(void) +static void PrintPageNamesAndStatsPageToWindows(void) { int stringXPos; int iconXPos; @@ -2846,7 +2496,7 @@ static void PrintPageNamesAndStatsPage(void) SummaryScreen_PrintTextOnWindow(15, gText_Jam, 0, 17, 0, 1); } -void sub_81C2AFC(u8 a) +static void sub_81C2AFC(u8 a) { u8 i; @@ -2872,9 +2522,9 @@ void sub_81C2AFC(u8 a) break; case 2: PutWindowTilemap(2); - if (gUnknown_0203CF1C->mode == PSS_MODE_SELECT_MOVE) + if (pssData->mode == PSS_MODE_SELECT_MOVE) { - if (gUnknown_0203CF1C->newMove != MOVE_NONE || gUnknown_0203CF1C->firstMoveIndex != MAX_MON_MOVES) + if (pssData->newMove != MOVE_NONE || pssData->firstMoveIndex != MAX_MON_MOVES) PutWindowTilemap(14); } else @@ -2884,9 +2534,9 @@ void sub_81C2AFC(u8 a) break; case 3: PutWindowTilemap(3); - if (gUnknown_0203CF1C->mode == PSS_MODE_SELECT_MOVE) + if (pssData->mode == PSS_MODE_SELECT_MOVE) { - if (gUnknown_0203CF1C->newMove != MOVE_NONE || gUnknown_0203CF1C->firstMoveIndex != MAX_MON_MOVES) + if (pssData->newMove != MOVE_NONE || pssData->firstMoveIndex != MAX_MON_MOVES) PutWindowTilemap(15); } else @@ -2898,13 +2548,13 @@ void sub_81C2AFC(u8 a) for (i = 0; i < 8; i++) { - PutWindowTilemap(gUnknown_0203CF1C->windowIds[i]); + PutWindowTilemap(pssData->windowIds[i]); } schedule_bg_copy_tilemap_to_vram(0); } -void sub_81C2C38(u8 a) +static void sub_81C2C38(u8 a) { u8 i; switch (a) @@ -2921,9 +2571,9 @@ void sub_81C2C38(u8 a) ClearWindowTilemap(12); break; case 2: - if (gUnknown_0203CF1C->mode == PSS_MODE_SELECT_MOVE) + if (pssData->mode == PSS_MODE_SELECT_MOVE) { - if (gUnknown_0203CF1C->newMove != MOVE_NONE || gUnknown_0203CF1C->firstMoveIndex != MAX_MON_MOVES) + if (pssData->newMove != MOVE_NONE || pssData->firstMoveIndex != MAX_MON_MOVES) ClearWindowTilemap(14); } else @@ -2932,9 +2582,9 @@ void sub_81C2C38(u8 a) } break; case 3: - if (gUnknown_0203CF1C->mode == PSS_MODE_SELECT_MOVE) + if (pssData->mode == PSS_MODE_SELECT_MOVE) { - if (gUnknown_0203CF1C->newMove != MOVE_NONE || gUnknown_0203CF1C->firstMoveIndex != MAX_MON_MOVES) + if (pssData->newMove != MOVE_NONE || pssData->firstMoveIndex != MAX_MON_MOVES) ClearWindowTilemap(15); } else @@ -2952,9 +2602,9 @@ void sub_81C2C38(u8 a) schedule_bg_copy_tilemap_to_vram(0); } -u8 AddWindowFromTemplateList(const struct WindowTemplate *template, u8 templateId) +static u8 AddWindowFromTemplateList(const struct WindowTemplate *template, u8 templateId) { - u8 *windowIdPtr = &(gUnknown_0203CF1C->windowIds[templateId]); + u8 *windowIdPtr = &(pssData->windowIds[templateId]); if (*windowIdPtr == 0xFF) { *windowIdPtr = AddWindow(&template[templateId]); @@ -2963,9 +2613,9 @@ u8 AddWindowFromTemplateList(const struct WindowTemplate *template, u8 templateI return *windowIdPtr; } -void SummaryScreen_RemoveWindowByIndex(u8 windowIndex) +static void SummaryScreen_RemoveWindowByIndex(u8 windowIndex) { - u8 *windowIdPtr = &(gUnknown_0203CF1C->windowIds[windowIndex]); + u8 *windowIdPtr = &(pssData->windowIds[windowIndex]); if (*windowIdPtr != 0xFF) { ClearWindowTilemap(*windowIdPtr); @@ -2974,25 +2624,25 @@ void SummaryScreen_RemoveWindowByIndex(u8 windowIndex) } } -void sub_81C2D9C(u8 pageIndex) +static void sub_81C2D9C(u8 pageIndex) { u16 i; for (i = 0; i < 8; i++) { - if (gUnknown_0203CF1C->windowIds[i] != 0xFF) - FillWindowPixelBuffer(gUnknown_0203CF1C->windowIds[i], 0); + if (pssData->windowIds[i] != 0xFF) + FillWindowPixelBuffer(pssData->windowIds[i], 0); } gUnknown_0861CE54[pageIndex](); } -void sub_81C2DE4(u8 pageIndex) +static void sub_81C2DE4(u8 pageIndex) { CreateTask(gUnknown_0861CE64[pageIndex], 16); } -void sub_81C2E00(void) +static void sub_81C2E00(void) { - if (gUnknown_0203CF1C->summary.isEgg) + if (pssData->summary.isEgg) { PrintEggOTName(); PrintEggOTID(); @@ -3010,7 +2660,7 @@ void sub_81C2E00(void) } } -void sub_81C2E40(u8 taskId) +static void sub_81C2E40(u8 taskId) { s16 *data = gTasks[taskId].data; switch (data[0]) @@ -3040,7 +2690,7 @@ void sub_81C2E40(u8 taskId) data[0]++; } -void PrintMonOTName(void) +static void PrintMonOTName(void) { u8 windowId; int x; @@ -3049,39 +2699,39 @@ void PrintMonOTName(void) windowId = AddWindowFromTemplateList(gUnknown_0861CCCC, 0); SummaryScreen_PrintTextOnWindow(windowId, gText_OTSlash, 0, 1, 0, 1); x = GetStringWidth(1, gText_OTSlash, 0); - if (gUnknown_0203CF1C->summary.OTGender == 0) - SummaryScreen_PrintTextOnWindow(windowId, gUnknown_0203CF1C->summary.OTName, x, 1, 0, 5); + if (pssData->summary.OTGender == 0) + SummaryScreen_PrintTextOnWindow(windowId, pssData->summary.OTName, x, 1, 0, 5); else - SummaryScreen_PrintTextOnWindow(windowId, gUnknown_0203CF1C->summary.OTName, x, 1, 0, 6); + SummaryScreen_PrintTextOnWindow(windowId, pssData->summary.OTName, x, 1, 0, 6); } } -void PrintMonOTID(void) +static void PrintMonOTID(void) { int xPos; if (sub_81A6BF4() != TRUE && sub_81B9E94() != TRUE) { - ConvertIntToDecimalStringN(StringCopy(gStringVar1, gText_UnkCtrlF907F908), (u16)gUnknown_0203CF1C->summary.OTID, 2, 5); + ConvertIntToDecimalStringN(StringCopy(gStringVar1, gText_UnkCtrlF907F908), (u16)pssData->summary.OTID, 2, 5); xPos = GetStringRightAlignXOffset(1, gStringVar1, 56); SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCCC, 1), gStringVar1, xPos, 1, 0, 1); } } -void PrintMonAbilityName(void) +static void PrintMonAbilityName(void) { - u8 ability = GetAbilityBySpecies(gUnknown_0203CF1C->summary.species, gUnknown_0203CF1C->summary.altAbility); + u8 ability = GetAbilityBySpecies(pssData->summary.species, pssData->summary.altAbility); SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCCC, 2), gAbilityNames[ability], 0, 1, 0, 1); } -void PrintMonAbilityDescription(void) +static void PrintMonAbilityDescription(void) { - u8 ability = GetAbilityBySpecies(gUnknown_0203CF1C->summary.species, gUnknown_0203CF1C->summary.altAbility); + u8 ability = GetAbilityBySpecies(pssData->summary.species, pssData->summary.altAbility); SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCCC, 2), gAbilityDescriptionPointers[ability], 0, 17, 0, 0); } -void BufferMonTrainerMemo(void) +static void BufferMonTrainerMemo(void) { - struct PokeSummary *sum = &gUnknown_0203CF1C->summary; + struct PokeSummary *sum = &pssData->summary; const u8 *text; DynamicPlaceholderTextUtil_Reset(); @@ -3116,7 +2766,7 @@ void BufferMonTrainerMemo(void) { text = gText_XNatureFatefulEncounter; } - else if (sum->metLocation != MAPSEC_IN_GAME_TRADE && MonCameFromGBAGames()) + else if (sum->metLocation != MAPSEC_IN_GAME_TRADE && DidMonComeFromGBAGames()) { text = (sum->metLocation >= MAPSEC_NONE) ? gText_XNatureObtainedInTrade : gText_XNatureProbablyMetAt; } @@ -3131,34 +2781,34 @@ void BufferMonTrainerMemo(void) } } -void PrintMonTrainerMemo(void) +static void PrintMonTrainerMemo(void) { SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCCC, 3), gStringVar4, 0, 1, 0, 0); } -void BufferNatureString(void) +static void BufferNatureString(void) { - struct UnkSummaryStruct *sumStruct = gUnknown_0203CF1C; + struct UnkSummaryStruct *sumStruct = pssData; DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, gNatureNamePointers[sumStruct->summary.nature]); DynamicPlaceholderTextUtil_SetPlaceholderPtr(5, gText_EmptyString5); } -void GetMetLevelString(u8 *output) +static void GetMetLevelString(u8 *output) { - u8 level = gUnknown_0203CF1C->summary.metLevel; + u8 level = pssData->summary.metLevel; if (level == 0) level = EGG_HATCH_LEVEL; ConvertIntToDecimalStringN(output, level, 0, 3); DynamicPlaceholderTextUtil_SetPlaceholderPtr(3, output); } -bool8 DoesMonOTMatchOwner(void) +static bool8 DoesMonOTMatchOwner(void) { - struct PokeSummary *sum = &gUnknown_0203CF1C->summary; + struct PokeSummary *sum = &pssData->summary; u32 trainerId; u8 gender; - if (gUnknown_0203CF1C->monList.mons == gEnemyParty) + if (pssData->monList.mons == gEnemyParty) { u8 multiID = GetMultiplayerId() ^ 1; trainerId = (u16)gLinkPlayers[multiID].trainerId; @@ -3178,33 +2828,33 @@ bool8 DoesMonOTMatchOwner(void) return TRUE; } -bool8 MonCameFromGBAGames(void) +static bool8 DidMonComeFromGBAGames(void) { - struct PokeSummary *sum = &gUnknown_0203CF1C->summary; + struct PokeSummary *sum = &pssData->summary; if (sum->metGame > 0 && sum->metGame <= VERSION_LEAF_GREEN) return TRUE; return FALSE; } -bool8 MonCameFromRSE(void) +bool8 DidMonComeFromRSE(void) { - struct PokeSummary *sum = &gUnknown_0203CF1C->summary; + struct PokeSummary *sum = &pssData->summary; if (sum->metGame > 0 && sum->metGame <= VERSION_EMERALD) return TRUE; return FALSE; } -bool8 IsInGamePartnerMon(void) +static bool8 IsInGamePartnerMon(void) { if ((gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) && gMain.inBattle) { - if (gUnknown_0203CF1C->curMonIndex == 1 || gUnknown_0203CF1C->curMonIndex == 4 || gUnknown_0203CF1C->curMonIndex == 5) + if (pssData->curMonIndex == 1 || pssData->curMonIndex == 4 || pssData->curMonIndex == 5) return TRUE; } return FALSE; } -void PrintEggOTName(void) +static void PrintEggOTName(void) { u32 windowId = AddWindowFromTemplateList(gUnknown_0861CCCC, 0); u32 width = GetStringWidth(1, gText_OTSlash, 0); @@ -3212,7 +2862,7 @@ void PrintEggOTName(void) SummaryScreen_PrintTextOnWindow(windowId, gText_FiveMarks, width, 1, 0, 1); } -void PrintEggOTID(void) +static void PrintEggOTID(void) { int x; StringCopy(gStringVar1, gText_UnkCtrlF907F908); @@ -3221,12 +2871,12 @@ void PrintEggOTID(void) SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCCC, 1), gStringVar1, x, 1, 0, 1); } -void PrintEggState(void) +static void PrintEggState(void) { const u8 *text; - struct PokeSummary *sum = &gUnknown_0203CF1C->summary; + struct PokeSummary *sum = &pssData->summary; - if (gUnknown_0203CF1C->summary.sanity == TRUE) + if (pssData->summary.sanity == TRUE) text = gText_EggWillTakeALongTime; else if (sum->friendship <= 5) text = gText_EggAboutToHatch; @@ -3240,19 +2890,19 @@ void PrintEggState(void) SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCCC, 2), text, 0, 1, 0, 0); } -void PrintEggMemo(void) +static void PrintEggMemo(void) { const u8 *text; - struct PokeSummary *sum = &gUnknown_0203CF1C->summary; + struct PokeSummary *sum = &pssData->summary; - if (gUnknown_0203CF1C->summary.sanity != 1) + if (pssData->summary.sanity != 1) { if (sum->metLocation == MAPSEC_FATEFUL_ENCOUNTER) text = gText_PeculiarEggNicePlace; - else if (MonCameFromGBAGames() == FALSE || DoesMonOTMatchOwner() == FALSE) + else if (DidMonComeFromGBAGames() == FALSE || DoesMonOTMatchOwner() == FALSE) text = gText_PeculiarEggTrade; else if (sum->metLocation == MAPSEC_SPECIAL_EGG) - text = (MonCameFromRSE() == TRUE) ? gText_EggFromHotSprings : gText_EggFromTraveler; + text = (DidMonComeFromRSE() == TRUE) ? gText_EggFromHotSprings : gText_EggFromTraveler; else text = gText_OddEggFoundByCouple; } @@ -3264,7 +2914,7 @@ void PrintEggMemo(void) SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCCC, 3), text, 0, 1, 0, 0); } -void sub_81C3530(void) +static void sub_81C3530(void) { PrintHeldItemName(); PrintRibbonCount(); @@ -3275,7 +2925,7 @@ void sub_81C3530(void) PrintExpPointsNextLevel(); } -void sub_81C3554(u8 taskId) +static void sub_81C3554(u8 taskId) { s16 *data = gTasks[taskId].data; @@ -3309,22 +2959,22 @@ void sub_81C3554(u8 taskId) data[0]++; } -void PrintHeldItemName(void) +static void PrintHeldItemName(void) { const u8 *text; int offset; - if (gUnknown_0203CF1C->summary.item == ITEM_ENIGMA_BERRY && sub_81B1250() == TRUE && (gUnknown_0203CF1C->curMonIndex == 1 || gUnknown_0203CF1C->curMonIndex == 4 || gUnknown_0203CF1C->curMonIndex == 5)) + if (pssData->summary.item == ITEM_ENIGMA_BERRY && sub_81B1250() == TRUE && (pssData->curMonIndex == 1 || pssData->curMonIndex == 4 || pssData->curMonIndex == 5)) { text = ItemId_GetName(ITEM_ENIGMA_BERRY); } - else if (gUnknown_0203CF1C->summary.item == ITEM_NONE) + else if (pssData->summary.item == ITEM_NONE) { text = gText_None; } else { - CopyItemName(gUnknown_0203CF1C->summary.item, gStringVar1); + CopyItemName(pssData->summary.item, gStringVar1); text = gStringVar1; } @@ -3332,18 +2982,18 @@ void PrintHeldItemName(void) SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCEC, 0), text, offset, 1, 0, 0); } -void PrintRibbonCount(void) +static void PrintRibbonCount(void) { const u8 *text; int offset; - if (gUnknown_0203CF1C->summary.ribbonCount == 0) + if (pssData->summary.ribbonCount == 0) { text = gText_None; } else { - ConvertIntToDecimalStringN(gStringVar1, gUnknown_0203CF1C->summary.ribbonCount, 1, 2); + ConvertIntToDecimalStringN(gStringVar1, pssData->summary.ribbonCount, 1, 2); StringExpandPlaceholders(gStringVar4, gText_RibbonsVar1); text = gStringVar4; } @@ -3352,17 +3002,17 @@ void PrintRibbonCount(void) SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCEC, 1), text, offset, 1, 0, 0); } -void BufferLeftColumnStats(void) +static void BufferLeftColumnStats(void) { u8 *currentHPString = Alloc(8); u8 *maxHPString = Alloc(8); u8 *attackString = Alloc(8); u8 *defenseString = Alloc(8); - ConvertIntToDecimalStringN(currentHPString, gUnknown_0203CF1C->summary.currentHP, 1, 3); - ConvertIntToDecimalStringN(maxHPString, gUnknown_0203CF1C->summary.maxHP, 1, 3); - ConvertIntToDecimalStringN(attackString, gUnknown_0203CF1C->summary.atk, 1, 7); - ConvertIntToDecimalStringN(defenseString, gUnknown_0203CF1C->summary.def, 1, 7); + ConvertIntToDecimalStringN(currentHPString, pssData->summary.currentHP, 1, 3); + ConvertIntToDecimalStringN(maxHPString, pssData->summary.maxHP, 1, 3); + ConvertIntToDecimalStringN(attackString, pssData->summary.atk, 1, 7); + ConvertIntToDecimalStringN(defenseString, pssData->summary.def, 1, 7); DynamicPlaceholderTextUtil_Reset(); DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, currentHPString); @@ -3377,16 +3027,16 @@ void BufferLeftColumnStats(void) Free(defenseString); } -void PrintLeftColumnStats(void) +static void PrintLeftColumnStats(void) { SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCEC, 2), gStringVar4, 4, 1, 0, 0); } -void BufferRightColumnStats(void) +static void BufferRightColumnStats(void) { - ConvertIntToDecimalStringN(gStringVar1, gUnknown_0203CF1C->summary.spatk, 1, 3); - ConvertIntToDecimalStringN(gStringVar2, gUnknown_0203CF1C->summary.spdef, 1, 3); - ConvertIntToDecimalStringN(gStringVar3, gUnknown_0203CF1C->summary.speed, 1, 3); + ConvertIntToDecimalStringN(gStringVar1, pssData->summary.spatk, 1, 3); + ConvertIntToDecimalStringN(gStringVar2, pssData->summary.spdef, 1, 3); + ConvertIntToDecimalStringN(gStringVar3, pssData->summary.speed, 1, 3); DynamicPlaceholderTextUtil_Reset(); DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStringVar1); @@ -3395,14 +3045,14 @@ void BufferRightColumnStats(void) DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_0861CE8E); } -void PrintRightColumnStats(void) +static void PrintRightColumnStats(void) { SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCEC, 3), gStringVar4, 2, 1, 0, 0); } -void PrintExpPointsNextLevel(void) +static void PrintExpPointsNextLevel(void) { - struct PokeSummary *sum = &gUnknown_0203CF1C->summary; + struct PokeSummary *sum = &pssData->summary; u8 windowId = AddWindowFromTemplateList(gUnknown_0861CCEC, 4); int offset; u32 expToNextLevel; @@ -3421,29 +3071,29 @@ void PrintExpPointsNextLevel(void) SummaryScreen_PrintTextOnWindow(windowId, gStringVar1, offset, 17, 0, 0); } -void sub_81C3984(void) +static void sub_81C3984(void) { PrintMoveNameAndPP(0); PrintMoveNameAndPP(1); PrintMoveNameAndPP(2); PrintMoveNameAndPP(3); - if (gUnknown_0203CF1C->mode == PSS_MODE_SELECT_MOVE) + if (pssData->mode == PSS_MODE_SELECT_MOVE) { PrintNewMoveDetailsOrCancelText(); - if (gUnknown_0203CF1C->firstMoveIndex == MAX_MON_MOVES) + if (pssData->firstMoveIndex == MAX_MON_MOVES) { - if (gUnknown_0203CF1C->newMove != MOVE_NONE) - PrintMoveDetails(gUnknown_0203CF1C->newMove); + if (pssData->newMove != MOVE_NONE) + PrintMoveDetails(pssData->newMove); } else { - PrintMoveDetails(gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->firstMoveIndex]); + PrintMoveDetails(pssData->summary.moves[pssData->firstMoveIndex]); } } } -void sub_81C39F0(u8 taskId) +static void sub_81C39F0(u8 taskId) { s16 *data = gTasks[taskId].data; @@ -3462,22 +3112,22 @@ void sub_81C39F0(u8 taskId) PrintMoveNameAndPP(3); break; case 5: - if (gUnknown_0203CF1C->mode == PSS_MODE_SELECT_MOVE) + if (pssData->mode == PSS_MODE_SELECT_MOVE) PrintNewMoveDetailsOrCancelText(); break; case 6: - if (gUnknown_0203CF1C->mode == PSS_MODE_SELECT_MOVE) + if (pssData->mode == PSS_MODE_SELECT_MOVE) { - if (gUnknown_0203CF1C->firstMoveIndex == MAX_MON_MOVES) - data[1] = gUnknown_0203CF1C->newMove; + if (pssData->firstMoveIndex == MAX_MON_MOVES) + data[1] = pssData->newMove; else - data[1] = gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->firstMoveIndex]; + data[1] = pssData->summary.moves[pssData->firstMoveIndex]; } break; case 7: - if (gUnknown_0203CF1C->mode == PSS_MODE_SELECT_MOVE) + if (pssData->mode == PSS_MODE_SELECT_MOVE) { - if (gUnknown_0203CF1C->newMove != MOVE_NONE || gUnknown_0203CF1C->firstMoveIndex != MAX_MON_MOVES) + if (pssData->newMove != MOVE_NONE || pssData->firstMoveIndex != MAX_MON_MOVES) PrintMoveDetails(data[1]); } break; @@ -3488,13 +3138,13 @@ void sub_81C39F0(u8 taskId) data[0]++; } -void PrintMoveNameAndPP(u8 moveIndex) +static void PrintMoveNameAndPP(u8 moveIndex) { u8 pp; u32 ppState; const u8 *text; u32 offset; - struct UnkSummaryStruct *summaryStruct = gUnknown_0203CF1C; + struct UnkSummaryStruct *summaryStruct = pssData; u8 moveNameWindowId = AddWindowFromTemplateList(gUnknown_0861CD14, 0); u8 ppValueWindowId = AddWindowFromTemplateList(gUnknown_0861CD14, 1); u16 move = summaryStruct->summary.moves[moveIndex]; @@ -3524,7 +3174,7 @@ void PrintMoveNameAndPP(u8 moveIndex) SummaryScreen_PrintTextOnWindow(ppValueWindowId, text, offset, moveIndex * 16 + 1, 0, ppState); } -void PrintMovePowerAndAccuracy(u16 moveIndex) +static void PrintMovePowerAndAccuracy(u16 moveIndex) { const u8 *text; if (moveIndex != 0) @@ -3557,21 +3207,21 @@ void PrintMovePowerAndAccuracy(u16 moveIndex) } } -void sub_81C3D08(void) +static void sub_81C3D08(void) { PrintMoveNameAndPP(0); PrintMoveNameAndPP(1); PrintMoveNameAndPP(2); PrintMoveNameAndPP(3); - if (gUnknown_0203CF1C->mode == PSS_MODE_SELECT_MOVE) + if (pssData->mode == PSS_MODE_SELECT_MOVE) { PrintNewMoveDetailsOrCancelText(); - PrintContestMoveDescription(gUnknown_0203CF1C->firstMoveIndex); + PrintContestMoveDescription(pssData->firstMoveIndex); } } -void sub_81C3D54(u8 taskId) +static void sub_81C3D54(u8 taskId) { s16 *data = gTasks[taskId].data; s16 dataa = data[0] - 1; @@ -3591,14 +3241,14 @@ void sub_81C3D54(u8 taskId) PrintMoveNameAndPP(3); break; case 4: - if (gUnknown_0203CF1C->mode == PSS_MODE_SELECT_MOVE) + if (pssData->mode == PSS_MODE_SELECT_MOVE) PrintNewMoveDetailsOrCancelText(); break; case 5: - if (gUnknown_0203CF1C->mode == PSS_MODE_SELECT_MOVE) + if (pssData->mode == PSS_MODE_SELECT_MOVE) { - if (gUnknown_0203CF1C->newMove != MOVE_NONE || gUnknown_0203CF1C->firstMoveIndex != MAX_MON_MOVES) - PrintContestMoveDescription(gUnknown_0203CF1C->firstMoveIndex); + if (pssData->newMove != MOVE_NONE || pssData->firstMoveIndex != MAX_MON_MOVES) + PrintContestMoveDescription(pssData->firstMoveIndex); } break; case 6: @@ -3608,14 +3258,14 @@ void sub_81C3D54(u8 taskId) data[0]++; } -void PrintContestMoveDescription(u8 moveSlot) +static void PrintContestMoveDescription(u8 moveSlot) { u16 move; if (moveSlot == 4) - move = gUnknown_0203CF1C->newMove; + move = pssData->newMove; else - move = gUnknown_0203CF1C->summary.moves[moveSlot]; + move = pssData->summary.moves[moveSlot]; if (move != MOVE_NONE) { @@ -3624,13 +3274,13 @@ void PrintContestMoveDescription(u8 moveSlot) } } -void PrintMoveDetails(u16 move) +static void PrintMoveDetails(u16 move) { u8 windowId = AddWindowFromTemplateList(gUnknown_0861CD14, 2); FillWindowPixelBuffer(windowId, 0); if (move != MOVE_NONE) { - if (gUnknown_0203CF1C->currPageIndex == 2) + if (pssData->currPageIndex == 2) { PrintMovePowerAndAccuracy(move); SummaryScreen_PrintTextOnWindow(windowId, gMoveDescriptionPointers[move - 1], 6, 1, 0, 0); @@ -3649,20 +3299,20 @@ void PrintMoveDetails(u16 move) schedule_bg_copy_tilemap_to_vram(0); } -void PrintNewMoveDetailsOrCancelText(void) +static void PrintNewMoveDetailsOrCancelText(void) { u8 windowId1 = AddWindowFromTemplateList(gUnknown_0861CD14, 0); u8 windowId2 = AddWindowFromTemplateList(gUnknown_0861CD14, 1); - if (gUnknown_0203CF1C->newMove == MOVE_NONE) + if (pssData->newMove == MOVE_NONE) { SummaryScreen_PrintTextOnWindow(windowId1, gText_Cancel, 0, 65, 0, 1); } else { - u16 move = gUnknown_0203CF1C->newMove; + u16 move = pssData->newMove; - if (gUnknown_0203CF1C->currPageIndex == 2) + if (pssData->currPageIndex == 2) SummaryScreen_PrintTextOnWindow(windowId1, gMoveNames[move], 0, 65, 0, 6); else SummaryScreen_PrintTextOnWindow(windowId1, gMoveNames[move], 0, 65, 0, 5); @@ -3676,14 +3326,14 @@ void PrintNewMoveDetailsOrCancelText(void) } } -void sub_81C4064(void) +static void sub_81C4064(void) { u8 windowId = AddWindowFromTemplateList(gUnknown_0861CD14, 0); FillWindowPixelRect(windowId, 0, 0, 66, 72, 16); CopyWindowToVram(windowId, 2); } -void sub_81C40A0(u8 moveIndex1, u8 moveIndex2) +static void sub_81C40A0(u8 moveIndex1, u8 moveIndex2) { u8 windowId1 = AddWindowFromTemplateList(gUnknown_0861CD14, 0); u8 windowId2 = AddWindowFromTemplateList(gUnknown_0861CD14, 1); @@ -3698,49 +3348,51 @@ void sub_81C40A0(u8 moveIndex1, u8 moveIndex2) PrintMoveNameAndPP(moveIndex2); } -void sub_81C4154(void) +static void PrintHMMovesCantBeForgotten(void) { u8 windowId = AddWindowFromTemplateList(gUnknown_0861CD14, 2); FillWindowPixelBuffer(windowId, 0); SummaryScreen_PrintTextOnWindow(windowId, gText_HMMovesCantBeForgotten2, 6, 1, 0, 0); } -void sub_81C4190(void) +static void sub_81C4190(void) { u8 i; for (i = 0; i < 28; i++) - gUnknown_0203CF1C->spriteIds[i] |= 0xFF; + { + pssData->spriteIds[i] = 0xFF; + } } -void DestroySpriteInArray(u8 spriteArrayId) +static void DestroySpriteInArray(u8 spriteArrayId) { - if (gUnknown_0203CF1C->spriteIds[spriteArrayId] != 0xFF) + if (pssData->spriteIds[spriteArrayId] != 0xFF) { - DestroySprite(&gSprites[gUnknown_0203CF1C->spriteIds[spriteArrayId]]); - gUnknown_0203CF1C->spriteIds[spriteArrayId] = 0xFF; + DestroySprite(&gSprites[pssData->spriteIds[spriteArrayId]]); + pssData->spriteIds[spriteArrayId] = 0xFF; } } -void sub_81C4204(u8 spriteArrayId, bool8 invisible) +static void sub_81C4204(u8 spriteArrayId, bool8 invisible) { - gSprites[gUnknown_0203CF1C->spriteIds[spriteArrayId]].invisible = invisible; + gSprites[pssData->spriteIds[spriteArrayId]].invisible = invisible; } -void sub_81C424C(void) +static void sub_81C424C(void) { u8 i; for (i = 3; i < 28; i++) { - if (gUnknown_0203CF1C->spriteIds[i] != 0xFF) + if (pssData->spriteIds[i] != 0xFF) sub_81C4204(i, TRUE); } } -void sub_81C4280(void) +static void sub_81C4280(void) { - switch (gUnknown_0203CF1C->currPageIndex) + switch (pssData->currPageIndex) { case 0: sub_81C43A0(); @@ -3756,22 +3408,22 @@ void sub_81C4280(void) } } -void sub_81C42C8(void) +static void sub_81C42C8(void) { u8 i; for (i = 3; i < 8; i++) { - if (gUnknown_0203CF1C->spriteIds[i] == 0xFF) - gUnknown_0203CF1C->spriteIds[i] = CreateSprite(&gUnknown_0861CFC4, 0, 0, 2); + if (pssData->spriteIds[i] == 0xFF) + pssData->spriteIds[i] = CreateSprite(&gUnknown_0861CFC4, 0, 0, 2); sub_81C4204(i, TRUE); } } -void sub_81C4318(u8 typeId, u8 x, u8 y, u8 spriteArrayId) +static void SetMoveTypeSpritePosAndType(u8 typeId, u8 x, u8 y, u8 spriteArrayId) { - struct Sprite *sprite = &gSprites[gUnknown_0203CF1C->spriteIds[spriteArrayId]]; + struct Sprite *sprite = &gSprites[pssData->spriteIds[spriteArrayId]]; StartSpriteAnim(sprite, typeId); sprite->oam.paletteNum = gUnknown_0861CFDC[typeId]; sprite->pos1.x = x + 16; @@ -3779,20 +3431,20 @@ void sub_81C4318(u8 typeId, u8 x, u8 y, u8 spriteArrayId) sub_81C4204(spriteArrayId, FALSE); } -void sub_81C43A0(void) +static void sub_81C43A0(void) { - struct PokeSummary *summary = &gUnknown_0203CF1C->summary; + struct PokeSummary *summary = &pssData->summary; if (summary->isEgg) { - sub_81C4318(TYPE_MYSTERY, 0x78, 0x30, 3); + SetMoveTypeSpritePosAndType(TYPE_MYSTERY, 120, 48, 3); sub_81C4204(4, TRUE); } else { - sub_81C4318(gBaseStats[summary->species].type1, 0x78, 0x30, 3); + SetMoveTypeSpritePosAndType(gBaseStats[summary->species].type1, 0x78, 0x30, 3); if (gBaseStats[summary->species].type1 != gBaseStats[summary->species].type2) { - sub_81C4318(gBaseStats[summary->species].type2, 0xA0, 0x30, 4); + SetMoveTypeSpritePosAndType(gBaseStats[summary->species].type2, 0xA0, 0x30, 4); sub_81C4204(4, FALSE); } else @@ -3802,51 +3454,51 @@ void sub_81C43A0(void) } } -void sub_81C4420(void) +static void sub_81C4420(void) { u8 i; - struct PokeSummary *summary = &gUnknown_0203CF1C->summary; + struct PokeSummary *summary = &pssData->summary; for (i = 0; i < 4; i++) { if (summary->moves[i] != MOVE_NONE) - sub_81C4318(gBattleMoves[summary->moves[i]].type, 0x55, 0x20 + (i * 0x10), i + 3); + SetMoveTypeSpritePosAndType(gBattleMoves[summary->moves[i]].type, 0x55, 0x20 + (i * 0x10), i + 3); else sub_81C4204(i + 3, TRUE); } } -void sub_81C4484(void) +static void sub_81C4484(void) { u8 i; - struct PokeSummary *summary = &gUnknown_0203CF1C->summary; + struct PokeSummary *summary = &pssData->summary; for (i = 0; i < 4; i++) { if (summary->moves[i] != MOVE_NONE) - sub_81C4318(NUMBER_OF_MON_TYPES + gContestMoves[summary->moves[i]].contestCategory, 0x55, 0x20 + (i * 0x10), i + 3); + SetMoveTypeSpritePosAndType(NUMBER_OF_MON_TYPES + gContestMoves[summary->moves[i]].contestCategory, 0x55, 0x20 + (i * 0x10), i + 3); else sub_81C4204(i + 3, TRUE); } } -void sub_81C44F0(void) +static void sub_81C44F0(void) { - if (gUnknown_0203CF1C->newMove == MOVE_NONE) + if (pssData->newMove == MOVE_NONE) { sub_81C4204(7, TRUE); } else { - if (gUnknown_0203CF1C->currPageIndex == 2) - sub_81C4318(gBattleMoves[gUnknown_0203CF1C->newMove].type, 0x55, 0x60, 7); + if (pssData->currPageIndex == 2) + SetMoveTypeSpritePosAndType(gBattleMoves[pssData->newMove].type, 85, 96, 7); else - sub_81C4318(NUMBER_OF_MON_TYPES + gContestMoves[gUnknown_0203CF1C->newMove].contestCategory, 0x55, 0x60, 7); + SetMoveTypeSpritePosAndType(NUMBER_OF_MON_TYPES + gContestMoves[pssData->newMove].contestCategory, 85, 96, 7); } } -void sub_81C4568(u8 a0, u8 a1) +static void sub_81C4568(u8 a0, u8 a1) { - struct Sprite *sprite1 = &gSprites[gUnknown_0203CF1C->spriteIds[a0 + 3]]; - struct Sprite *sprite2 = &gSprites[gUnknown_0203CF1C->spriteIds[a1 + 3]]; + struct Sprite *sprite1 = &gSprites[pssData->spriteIds[a0 + 3]]; + struct Sprite *sprite2 = &gSprites[pssData->spriteIds[a1 + 3]]; u8 temp = sprite1->animNum; sprite1->animNum = sprite2->animNum; @@ -3862,10 +3514,10 @@ void sub_81C4568(u8 a0, u8 a1) sprite2->animEnded = FALSE; } -u8 sub_81C45F4(struct Pokemon *mon, s16 *a1) +static u8 sub_81C45F4(struct Pokemon *mon, s16 *a1) { const struct CompressedSpritePalette *pal; - struct PokeSummary *summary = &gUnknown_0203CF1C->summary; + struct PokeSummary *summary = &pssData->summary; switch (*a1) { @@ -3874,7 +3526,7 @@ u8 sub_81C45F4(struct Pokemon *mon, s16 *a1) case 0: if (gMain.inBattle) { - if (sub_80688F8(3, gUnknown_0203CF1C->curMonIndex)) + if (sub_80688F8(3, pssData->curMonIndex)) { HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[summary->species2], gMonSpritesGfxPtr->sprites[1], summary->species2, summary->pid); } @@ -3887,7 +3539,7 @@ u8 sub_81C45F4(struct Pokemon *mon, s16 *a1) { if (gMonSpritesGfxPtr != NULL) { - if (gUnknown_0203CF1C->monList.mons == gPlayerParty || gUnknown_0203CF1C->mode == PSS_MODE_UNK2 || gUnknown_0203CF1C->unk40EF == TRUE) + if (pssData->monList.mons == gPlayerParty || pssData->mode == PSS_MODE_UNK2 || pssData->unk40EF == TRUE) { HandleLoadSpecialPokePic_2(&gMonFrontPicTable[summary->species2], gMonSpritesGfxPtr->sprites[1], summary->species2, summary->pid); } @@ -3898,7 +3550,7 @@ u8 sub_81C45F4(struct Pokemon *mon, s16 *a1) } else { - if (gUnknown_0203CF1C->monList.mons == gPlayerParty || gUnknown_0203CF1C->mode == PSS_MODE_UNK2 || gUnknown_0203CF1C->unk40EF == TRUE) + if (pssData->monList.mons == gPlayerParty || pssData->mode == PSS_MODE_UNK2 || pssData->unk40EF == TRUE) { HandleLoadSpecialPokePic_2(&gMonFrontPicTable[summary->species2], sub_806F4F8(0, 1), summary->species2, summary->pid); } @@ -3919,12 +3571,12 @@ u8 sub_81C45F4(struct Pokemon *mon, s16 *a1) } } -void sub_81C4778(void) +static void sub_81C4778(void) { - struct PokeSummary *summary = &gUnknown_0203CF1C->summary; + struct PokeSummary *summary = &pssData->summary; if (!summary->isEgg) { - if (ShouldPlayNormalMonCry(&gUnknown_0203CF1C->currentMon) == TRUE) + if (ShouldPlayNormalMonCry(&pssData->currentMon) == TRUE) { PlayCry3(summary->species2, 0, 0); } @@ -3935,9 +3587,9 @@ void sub_81C4778(void) } } -u8 sub_81C47B4(struct Pokemon *unused) +static u8 sub_81C47B4(struct Pokemon *unused) { - struct PokeSummary *summary = &gUnknown_0203CF1C->summary; + struct PokeSummary *summary = &pssData->summary; u8 spriteId = CreateSprite(&gMultiuseSpriteTemplate, 40, 64, 5); struct Sprite *sprite = &gSprites[spriteId]; @@ -3960,9 +3612,9 @@ u8 sub_81C47B4(struct Pokemon *unused) return spriteId; } -void sub_81C4844(struct Sprite *sprite) +static void sub_81C4844(struct Sprite *sprite) { - struct PokeSummary *summary = &gUnknown_0203CF1C->summary; + struct PokeSummary *summary = &pssData->summary; if (!gPaletteFade.active && sprite->data[2] != 1) { @@ -3986,9 +3638,9 @@ void SummaryScreen_DestroyUnknownTask(void) } } -bool32 DoesSpriteHaveCallback(void) +static bool32 SummaryScreen_DoesSpriteHaveCallback(void) { - if (gSprites[gUnknown_0203CF1C->spriteIds[0]].callback == SpriteCallbackDummy) + if (gSprites[pssData->spriteIds[0]].callback == SpriteCallbackDummy) { return FALSE; } @@ -3998,16 +3650,16 @@ bool32 DoesSpriteHaveCallback(void) } } -void sub_81C48F0(void) +static void sub_81C48F0(void) { u16 i; u16 paletteIndex; - gSprites[gUnknown_0203CF1C->spriteIds[0]].animPaused = TRUE; - gSprites[gUnknown_0203CF1C->spriteIds[0]].callback = SpriteCallbackDummy; + gSprites[pssData->spriteIds[0]].animPaused = TRUE; + gSprites[pssData->spriteIds[0]].callback = SpriteCallbackDummy; sub_806EE98(); - paletteIndex = (gSprites[gUnknown_0203CF1C->spriteIds[0]].oam.paletteNum * 16) | 0x100; + paletteIndex = (gSprites[pssData->spriteIds[0]].oam.paletteNum * 16) | 0x100; for (i = 0; i < 16; i++) { @@ -4015,41 +3667,41 @@ void sub_81C48F0(void) } } -void CreateMonMarkingsSprite(struct Pokemon *mon) +static void CreateMonMarkingsSprite(struct Pokemon *mon) { struct Sprite *sprite = sub_811FF94(30003, 30003, gUnknown_0861D120); - gUnknown_0203CF1C->markingsSprite = sprite; + pssData->markingsSprite = sprite; if (sprite != NULL) { StartSpriteAnim(sprite, GetMonData(mon, MON_DATA_MARKINGS)); - gUnknown_0203CF1C->markingsSprite->pos1.x = 60; - gUnknown_0203CF1C->markingsSprite->pos1.y = 26; - gUnknown_0203CF1C->markingsSprite->oam.priority = 1; + pssData->markingsSprite->pos1.x = 60; + pssData->markingsSprite->pos1.y = 26; + pssData->markingsSprite->oam.priority = 1; } } -void RemoveAndCreateMonMarkingsSprite(struct Pokemon *mon) +static void RemoveAndCreateMonMarkingsSprite(struct Pokemon *mon) { - DestroySprite(gUnknown_0203CF1C->markingsSprite); + DestroySprite(pssData->markingsSprite); FreeSpriteTilesByTag(30003); CreateMonMarkingsSprite(mon); } -void CreateCaughtBallSprite(struct Pokemon *mon) +static void CreateCaughtBallSprite(struct Pokemon *mon) { u8 ball = ItemIdToBallId(GetMonData(mon, MON_DATA_POKEBALL)); LoadBallGfx(ball); - gUnknown_0203CF1C->spriteIds[1] = CreateSprite(&gBallSpriteTemplates[ball], 16, 136, 0); - gSprites[gUnknown_0203CF1C->spriteIds[1]].callback = SpriteCallbackDummy; - gSprites[gUnknown_0203CF1C->spriteIds[1]].oam.priority = 3; + pssData->spriteIds[1] = CreateSprite(&gBallSpriteTemplates[ball], 16, 136, 0); + gSprites[pssData->spriteIds[1]].callback = SpriteCallbackDummy; + gSprites[pssData->spriteIds[1]].oam.priority = 3; } -void CreateSetStatusSprite(void) +static void CreateSetStatusSprite(void) { - u8 *spriteId = &gUnknown_0203CF1C->spriteIds[2]; + u8 *spriteId = &pssData->spriteIds[2]; u8 anim; if (*spriteId == 0xFF) @@ -4057,7 +3709,7 @@ void CreateSetStatusSprite(void) *spriteId = CreateSprite(&gUnknown_0861D108, 64, 152, 0); } - anim = sub_81B205C(&gUnknown_0203CF1C->currentMon); + anim = sub_81B205C(&pssData->currentMon); if (anim != 0) { @@ -4070,12 +3722,12 @@ void CreateSetStatusSprite(void) } } -void sub_81C4AF8(u8 a0) +static void sub_81C4AF8(u8 a0) { u8 i; - u8 *spriteIds = &gUnknown_0203CF1C->spriteIds[a0]; + u8 *spriteIds = &pssData->spriteIds[a0]; - if (gUnknown_0203CF1C->currPageIndex > 1) + if (pssData->currPageIndex > 1) { u8 subsprite = 0; if (a0 == 8) @@ -4105,7 +3757,7 @@ void sub_81C4AF8(u8 a0) } } -void sub_81C4BE4(struct Sprite *sprite) +static void sub_81C4BE4(struct Sprite *sprite) { if (sprite->animNum > 3 && sprite->animNum < 7) { @@ -4127,15 +3779,15 @@ void sub_81C4BE4(struct Sprite *sprite) if (sprite->data[0] == 8) { - sprite->pos2.y = gUnknown_0203CF1C->firstMoveIndex * 16; + sprite->pos2.y = pssData->firstMoveIndex * 16; } else { - sprite->pos2.y = gUnknown_0203CF1C->secondMoveIndex * 16; + sprite->pos2.y = pssData->secondMoveIndex * 16; } } -void sub_81C4C60(u8 a0) +static void sub_81C4C60(u8 a0) { u8 i; for (i = 0; i < 10; i++) @@ -4144,10 +3796,10 @@ void sub_81C4C60(u8 a0) } } -void sub_81C4C84(u8 a0) +static void sub_81C4C84(u8 a0) { u8 i; - u8 *spriteIds = &gUnknown_0203CF1C->spriteIds[8]; + u8 *spriteIds = &pssData->spriteIds[8]; a0 *= 3; for (i = 0; i < 10; i++) @@ -4167,10 +3819,10 @@ void sub_81C4C84(u8 a0) } } -void sub_81C4D18(u8 a0) +static void sub_81C4D18(u8 firstSpriteId) { u8 i; - u8 *spriteIds = &gUnknown_0203CF1C->spriteIds[a0]; + u8 *spriteIds = &pssData->spriteIds[firstSpriteId]; for (i = 0; i < 10; i++) { -- cgit v1.2.3 From 2b81db7acecd8baa3e343de66fd229040ec81381 Mon Sep 17 00:00:00 2001 From: Diegoisawesome Date: Wed, 15 Aug 2018 18:50:56 -0700 Subject: Fix Task_Truck1 --- src/field_special_scene.c | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) (limited to 'src') diff --git a/src/field_special_scene.c b/src/field_special_scene.c index 6f33b2c9b..c6cb0741d 100644 --- a/src/field_special_scene.c +++ b/src/field_special_scene.c @@ -63,32 +63,24 @@ s16 GetTruckBoxMovement(int a1) // for the box movement? return 0; } -// smh STILL BROKEN IN EMERALD void Task_Truck1(u8 taskId) { s16 *data = gTasks[taskId].data; - s16 cameraYpan; - s16 box1 = 0; - s16 box2 = 0; - s16 box3 = 0; - u8 mapNum, mapGroup; - register s16 zero asm("r4"); + s16 cameraXpan = 0, cameraYpan = 0; + s16 box1, box2, box3; box1 = GetTruckBoxMovement(data[0] + 30) * 4; // top box. - sub_808E82C(1, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 3, box1 + 3); + sub_808E82C(1, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 3 - cameraXpan, box1 + 3); box2 = GetTruckBoxMovement(data[0]) * 2; // bottom left box. - sub_808E82C(2, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 0, box2 - 3); + sub_808E82C(2, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -cameraXpan, box2 - 3); box3 = GetTruckBoxMovement(data[0]) * 4; // bottom right box. - mapNum = gSaveBlock1Ptr->location.mapNum; - mapGroup = gSaveBlock1Ptr->location.mapGroup; - zero = 0; - sub_808E82C(3, mapNum, mapGroup, -3, box3); + sub_808E82C(3, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -3 - cameraXpan, box3); if (++data[0] == SECONDS(500)) // this will never run - data[0] = zero; // reset the timer if it gets stuck. + data[0] = 0; // reset the timer if it gets stuck. cameraYpan = GetTruckCameraBobbingY(data[0]); - SetCameraPanning(0, cameraYpan); + SetCameraPanning(cameraXpan, cameraYpan); } void Task_Truck2(u8 taskId) -- cgit v1.2.3